2012-07-30 17 views
7

के साथ बाहरी मेकफ़ाइल शामिल करें मैं अपने स्वयं के सॉफ़्टवेयर के मेकफ़ाइल में बाहरी लाइब्रेरी से मेकफ़ाइल शामिल करना चाहता हूं। include ${dir}/makefile के मेकफ़ाइल समकक्ष के लिए सीएमके कोड को समझना सबसे आसान होगा।सीएमके

लेकिन शायद मुझे थोड़ा संदर्भ देना चाहिए। मैं अपने कोड में पीईटीएससी (और एसएलईपीसी) को एकीकृत करने की कोशिश कर रहा हूं। यहाँ एक उदाहरण से कुछ कोड SLEPc उपयोग कर रहा है (हालांकि PETSc काफी है ही):

hello: hello.o chkopts 
     -${CLINKER} -o hello hello.o ${SLEPC_LIB} 
     ${RM} hello.o 

include ${SLEPC_DIR}/conf/slepc_common 

आप देख सकते हैं, यह एक एक विशिष्ट makefile कि अन्य makefiles का एक समूह भी शामिल है में शामिल हैं की आवश्यकता है। यह थोड़ा अजीब है क्योंकि ऐसा लगता है कि इसमें निर्देशिका शामिल करना आसान होगा, लेकिन स्पष्ट रूप से मुझे समझने की तुलना में इसके लिए और भी कुछ है। वैसे भी, मेरा पहला समाधान बस मेकफ़ाइल को शामिल करना था और देखना चाहता था कि यह काम करता है या नहीं।

उत्तर

0

सीएमके के हिस्से के रूप में include method है। यदि आप पॉलिसी स्कोप को सही तरीके से सेट करते हैं (जो तब तक काम नहीं करता जब तक कि मैं 2.8 पर विश्वास नहीं करता) इसे प्रोजेक्ट विधि के डुप्लिकेट उपयोग को संभालना चाहिए और आपको वांछित परिणाम देना चाहिए। मैंने यह सुनिश्चित करने की कोशिश नहीं की है, लेकिन यह एक शॉट के लायक है।

1

मैं इस आवश्यकता बिल्कुल के रूप में Makefiles उत्पन्न किया गया CMake के डिजाइन मॉडल फिट नहीं करता है पीढ़ी चरण और एक CMake के मूल सिद्धांत के दौरान होता है विश्वास है कि यह क्रॉस प्लेटफॉर्म बनाने के लिए है, इसलिए बेहतर विचार हो सकता है हो:

  1. CMake लिपियों में बाहरी निर्माण प्रणाली पुनर्लेखन
  2. अपनी परियोजना में CMake स्क्रिप्ट शामिल

यदि प्रयास बहुत बड़ा है, तो आप add_custom_target/add_custom_command से जेनरेट की गई फ़ाइलों को ट्विक करने के लिए बॉक्स कमांड से कुछ करने के लिए प्रयास कर सकते हैं, लेकिन वे काफी प्रयास भी करेंगे - केवल मैन्युअल पढ़ें और अधिक अवसर तलाशें।