2016-02-07 4 views
5

मैंने इस पोस्ट को देखा: Using CMake to statically link to a library outside of the project। लेकिन मैं अभी भी व्याख्या इसका क्या मतलब समस्या हो रही है:मैं सीएमके में बाहर के पेड़ स्रोत को स्पष्ट रूप से कैसे निर्दिष्ट करूं?

add_subdirectory(/path/to/the/library/source/directory subproject/grzeslib) 

मैं यह सोचते हैं रहा हूँ "/ path/to// पुस्तकालय/स्रोत/निर्देशिका" हार्ड ड्राइव से पथ का मतलब है, लेकिन मुझे नहीं पता समझें कि "subproject/grzeslib" का अर्थ क्या है। अब मैं करने की कोशिश की:

include_directories(../path/to/dir) 
add_subdirectory (../path/to/dir .) 

लेकिन मैं एक विस्तृत चेतावनी हो रही है। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

उत्तर

8

दूसरा पैरामीटर उस उपनिर्देशिका से लक्ष्यों के परिणामों के लिए आउटपुट निर्देशिका है।

प्रलेखन यहाँ से:। https://cmake.org/cmake/help/v3.3/command/add_subdirectory.html " add_subdirectory

निर्माण करने के लिए एक उपनिर्देशिका जोड़े

add_subdirectory(source_dir [binary_dir] 
      [EXCLUDE_FROM_ALL]) 

निर्माण करने के लिए एक उपनिर्देशिका जोड़े source_dir निर्देशिका निर्दिष्ट करता है जो स्रोत में। CMakeLists.txt और कोड फ़ाइलें स्थित हैं। यदि यह एक सापेक्ष पथ है तो इसका मूल्यांकन वर्तमान निर्देशिका (सामान्य उपयोग) के संबंध में किया जाएगा, लेकिन यह एक पूर्ण पथ भी हो सकता है। Binary_dir निर्दिष्ट करता है निर्देशिका जिसमें आउटपुट फाइलें रखने के लिए। यदि यह एक सापेक्ष पथ है तो इसका मूल्यांकन वर्तमान आउटपुट निर्देशिका के संबंध में किया जाएगा, लेकिन यह एक पूर्ण पथ भी हो सकता है। यदि binary_dir निर्दिष्ट नहीं है, तो किसी भी सापेक्ष पथ का विस्तार करने से पहले Source_dir का मान उपयोग किया जाएगा (सामान्य उपयोग)। निर्दिष्ट स्रोत निर्देशिका में CMakeLists.txt फ़ाइल को वर्तमान आदेश फ़ाइल में प्रसंस्करण से पहले इस आदेश से परे जारी रखने से पहले तुरंत सीएमके द्वारा संसाधित किया जाएगा। "

+0

ठीक है धन्यवाद, लेकिन मुझे पूरा यकीन नहीं है कि इस पर निर्णय कैसे लें आउटपुट फाइलों को रखने के लिए। – user3063750

+0

तो अगर मैं "add_subdirectory (../path/to/dir।)" का उपयोग करता हूं, तो वर्तमान निर्देशिका में बाइनरी फाइलें क्यों नहीं जुड़ती हैं?क्या binary_dir बिल्ड फ़ोल्डर होना चाहिए? – user3063750

+0

मैंने अपने निर्माण फ़ोल्डर को binary_dir बनाया और यह चेतावनी से छुटकारा पा लिया। – user3063750

1

documentation

से निर्माण करने के लिए एक उप-निर्देशिका जोड़ें। Source_dir निर्देशिका निर्दिष्ट करता है जिसमें स्रोत CMakeLists.txt और कोड फ़ाइलें स्थित हैं। यदि यह एक सापेक्ष पथ है तो इसका मूल्यांकन वर्तमान निर्देशिका (सामान्य उपयोग) के संबंध में किया जाएगा, लेकिन यह पूर्ण पथ भी हो सकता है। Binary_dir निर्देशिका को निर्दिष्ट करता है जिसमें आउटपुट फ़ाइलों को रखें। यदि यह एक सापेक्ष पथ है तो वर्तमान आउटपुट निर्देशिका के संबंध में का मूल्यांकन किया जाएगा, लेकिन यह पूर्ण पथ भी हो सकता है। यदि binary_dir निर्दिष्ट नहीं है, तो source_dir का मान, किसी भी सापेक्ष पथ का विस्तार करने से पहले, उपयोग किया जाएगा ( सामान्य उपयोग)। निर्दिष्ट स्रोत निर्देशिका में CMakeLists.txt फ़ाइल में प्रसंस्करण से पहले CMake द्वारा तुरंत कार्रवाई की जाएगी वर्तमान इनपुट फ़ाइल इस आदेश

अपने उदाहरण से परे जारी है, सभी बाइनरी "में बनाया/path/to// लाइब्रेरी/स्रोत/निर्देशिका "को" उपप्रोजेक्ट/grzeslib "में रखा जाएगा, स्रोत डीआईआर को" साफ "रखने के लिए यह एक अच्छी बात है।

+0

मुझे सीएमके से चेतावनी मिल रही है कि मैंने जो उपरोक्त कोड जोड़ा है, वह एक अच्छा विचार नहीं है। मुझे आउटपुट फाइल कहां रखनी चाहिए? – user3063750

संबंधित मुद्दे

 संबंधित मुद्दे