2011-04-12 11 views
13

मैं सीएमके के लिए बहुत नया हूं। असल में, मैं Kdevelop4 widh C++ के माध्यम से इसे आजमा रहा हूं।सीएमके उपनिर्देशिका निर्भरता

मेरे पास हर नामस्थान के लिए उपनिवेश बनाने की आदत है, भले ही सभी स्रोतों को संकलित और एक निष्पादन योग्य में जोड़ा जाना चाहिए। खैर, जब मैं kdevelop के अंतर्गत एक निर्देशिका बनाता हूं, तो यह addakesists.txt को add_subdirectory कमांड के साथ अद्यतन करता है और इसके तहत एक नया CMakeLists.txt बनाता है, लेकिन वह अकेले संकलन सूची में इसके अंतर्गत स्रोत नहीं जोड़ता है।

 

project(gear2d) 

add_executable(gear2d object.cc main.cc) 

add_subdirectory(component) 

घटक के अधीन/मैं स्रोतों मैं संकलित और gear2d निष्पादनयोग्य उत्पादन से जोड़ा जा करना चाहते हैं:

मैं इस प्रकार जड़ CMakeLists.txt है। मैं इसे कैसे पूरा कर सकता हूं?

सीएमके FAQ में this प्रविष्टि है, लेकिन अगर इसका उत्तर मैं सादे मेकफ़ाइल के साथ रहना चाहता हूं।

क्या ऐसा करने का कोई तरीका है?

उत्तर

15

एक उपनिर्देशिका जोड़ना सीएमके को निर्दिष्ट करने से कहीं अधिक नहीं करता है कि उसे निर्देशिका में प्रवेश करना चाहिए और वहां किसी अन्य CMakeLists.txt की तलाश करनी चाहिए। आपको अभी भी add_library के साथ स्रोत फ़ाइलों के साथ एक लाइब्रेरी बनाने की आवश्यकता है और target_link_libraries के साथ इसे अपने निष्पादन योग्य से लिंक करें। निम्नलिखित की तरह कुछ:

subdir CMakeLists.txt

set(component_SOURCES ...) # Add the source-files for the component here 
# Optionally you can use file glob (uncomment the next line) 
# file(GLOB component_SOURCES *.cpp)below 

add_library(component ${component_SOURCES}) 

में शीर्ष-निर्देशिका CMakeLists.txt

project(gear2d) 
add_subdirectory(component) 
add_executable(gear2d object.cc main.cc) 
target_link_libraries(gear2d component) 
+0

कि यह किया! बहुत बहुत धन्यवाद। लाइब्रेरी का अर्थ क्या है, इसके लिए मेरे पास अन्य अवधारणा थी, वास्तव में मैं subdir CMakeListrs.txt में स्रोतों को जोड़ने की अपेक्षा कर रहा था जैसे कि यह add_executable के साथ रूट रूट में किया गया था। एक बार फिर धन्यवाद। – Leonardo

+0

यह मूल रूप से एक नया (पुस्तकालय) लक्ष्य जोड़ता है। भले ही यह लक्ष्य स्वयं से जुड़ा हुआ न हो, फिर भी कॉमिलर झंडे या अन्य सामान सेट करते समय समस्याएं उत्पन्न हो सकती हैं ... बेहतर उत्तर यहां है: http://stackoverflow.com/questions/8934295/add-source-in -ए-सबडायरेक्टरी-टू-ए-सेमेक-प्रोजेक्ट – kralyk

+0

@ क्रालिक: मैं नए लाइब्रेरी लक्ष्य पर सहमत हूं। विवेक के लिए, मैंने "एक निष्पादन योग्य में जोड़ा" पर स्किम किया और बस निर्देशिकाओं और पुस्तकालयों पर स्रोत फ़ाइलों को वितरित करने की एक और विधि पर संकेत देना चाहता था। –