यह CMake के साथ ऐसा करना असंभव है।
सीएमके केवल संकलक गुणों का एक सेट रखता है जिसे CMakeLists.txt फ़ाइल में सभी लक्ष्यों द्वारा साझा किया जाता है। यदि आप दो कंपाइलर्स का उपयोग करना चाहते हैं, तो आपको दो बार सीएमके चलाने की जरूरत है। यह भी उदाहरण के लिए सच है एक ही कंपाइलर टूलचेन से 32 बिट और 64 बिट बाइनरी का निर्माण।
इस के आसपास त्वरित और गंदा तरीका कस्टम आदेशों का उपयोग करते है। लेकिन फिर आप मूल रूप से गौरवशाली शैल-स्क्रिप्ट्स के साथ समाप्त होते हैं, जो शायद आप नहीं चाहते हैं।
स्वच्छ समाधान है: उन्हें उसी CMakeLists.txt में न रखें! आप वैसे भी विभिन्न आर्किटेक्चर के बीच लिंक नहीं कर सकते हैं, इसलिए उन्हें एक ही फाइल में होने की आवश्यकता नहीं है। आप अलग-अलग फाइलों और include()
में सीएमके स्क्रिप्ट के सामान्य हिस्सों को पुन: सक्रिय करके अनावश्यकता को कम कर सकते हैं।
यहां मुख्य नुकसान यह है कि आप एक ही कमांड के साथ निर्माण करने की क्षमता खो देते हैं, लेकिन आप इसे अपनी पसंदीदा स्क्रिप्टिंग भाषा में एक रैपर लिखकर हल कर सकते हैं जो विभिन्न सीएमके-मेकफ़ाइल को कॉल करने का ख्याल रखता है।
ऐसा लगता है कि add_directory (other_build_kind_folder) एक कस्टम रैपर बनाने के विरोध में एक संभावना है, क्योंकि मैं यही कर रहा हूं और ऐसा लगता है। :-) – cdleary
@cdleary क्या आप यह स्पष्ट कर सकते हैं कि यह कैसे काम करता है? 'Add_subdirectory' (या आप वास्तव में 'add_directory'' का अर्थ कैसे रखते हैं?) आपको टूलचेन्स स्विच करने की अनुमति देता है? –
वाह, यह वास्तव में सच में कुछ बुरा डिजाइन ... –