2009-09-22 10 views
26

मेरे पास दो परियोजनाएं हैं, जिनमें से दोनों सीएमके का उपयोग करते हैं। अब मैं एक परियोजना को एक पुस्तकालय के रूप में एक दूसरे के अंदर शामिल करना चाहता हूं, जबकि अभी भी उन्हें स्टैंडअलोन परियोजनाओं के रूप में संकलित करने की क्षमता बनाए रखना है।एक के अंदर एक सेमेक परियोजना को एम्बेड करना?

जो मैंने अभी तक किया है वह है: मूल परियोजना के उप-भाग में बाल प्रोजेक्ट की एक प्रति क्लोन करने के लिए संस्करण नियंत्रण प्रणाली का उपयोग करें। मैंने मूल परियोजना में बाल परियोजना के CMakeLists.txt को शामिल करने के लिए "add_subdirectory" का उपयोग किया है। और मैंने बाल परियोजना में कुछ लक्ष्यों का नाम बदलकर लक्ष्य के बीच नाम टक्कर तय की हैं।

हालांकि, एक मुद्दा जो मैं चल रहा हूं वह यह है कि बाल प्रोजेक्ट में विभिन्न कॉन्फ़िगरेशन परीक्षण चलते प्रतीत नहीं होते हैं। उदाहरण के लिए, यह निर्धारित करने के लिए कि कौन सा सिंक्रनाइज़ेशन प्राइमेटिव उपलब्ध है, बाल प्रोजेक्ट FindThreads मॉड्यूल का उपयोग करता है। मूल परियोजना थ्रेडिंग मुद्दों से अनजान है और इसलिए इससे संबंधित कोई परीक्षण नहीं है। इसी प्रकार, बाल परियोजना में हेडर के लिए विभिन्न परीक्षण होते हैं और ऐसे में माता-पिता परियोजना की आवश्यकता नहीं होती है। इनमें से कोई भी परीक्षण नहीं चल रहा है, और इन परीक्षणों द्वारा परिभाषित प्रतीकों को CMakeCache.txt फ़ाइल में जोड़ा नहीं जा रहा है।

मैं वास्तव में मूल परियोजना के CMakeLists.txt में सभी बाल परियोजना के परीक्षणों को उठाना नहीं चाहता (जो ज्यादातर माता-पिता के लिए प्रासंगिक प्लेटफ़ॉर्म-विशिष्ट मुद्दों से निपटने के लिए नहीं हैं)।

उत्तर

17

सीएमके 2.8 ने एक नया External Project मॉड्यूल जोड़ा, जो आपको एक और सीएमके परियोजना के निर्माण को चलाने के लिए एक कस्टम लक्ष्य बनाने देता है। इस पर प्रलेखन कमजोर है, लेकिन ऐसा लगता है कि यह वही कर सकता है जो आप चाहते हैं।

मुझे लगता है कि यह विचार आपके प्रोजेक्ट प्रोजेक्ट से बाहरी प्रोजेक्ट_एड को कॉल करना होगा, इसे बाल प्रोजेक्ट की स्रोत निर्देशिका में इंगित करना होगा (आप इसे अपने लिए एसवीएन या सीवीएस से बच्चे प्रोजेक्ट भी देख सकते हैं, अच्छा!)।

+1

धन्यवाद, मैं हाल ही में बाहरी परियोजनाओं के साथ काम कर रहा हूं और वे जो चाहते हैं वो करते हैं। चूंकि मैं गिट सबप्रोजेक्ट्स का उपयोग कर रहा हूं, मुझे बाहरी प्रोजेक्ट_एड को बाहरी प्रोजेक्ट को डाउनलोड या इंस्टॉल नहीं करना है - यह डाउनलोड को सेट करके और कमांड को "रिक्त स्ट्रिंग) इंस्टॉल करके किया जा सकता है। – Talin

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