मैं अपने स्रोत पेड़ में कई तृतीय-पक्ष पुस्तकालयों को शामिल करने की कोशिश कर रहा हूं जिसमें उन्नयन की आसानी के लिए उनके निर्माण प्रणाली में न्यूनतम परिवर्तन शामिल हैं। वे सभी सीएमके का उपयोग करते हैं, जैसा कि मैं करता हूं, इसलिए अपने स्वयं के CMakeLists.txt में मैं libfoo के लिए add_subdirectory(extern/foo)
का उपयोग कर सकता हूं।माता-पिता से सीएमके में एक डिफ़ॉल्ट विकल्प (...) मान को ओवरराइड करना CMakeLists.txt
लेकिन foo CMakeLists.txt एक परीक्षण दोहन संकलित करता है, दस्तावेज बनाता है, एक साझा लाइब्रेरी जिसे मुझे आवश्यकता नहीं है, और इसी तरह। Libfoo लेखकों के पास विकल्प के माध्यम से इन्हें नियंत्रित करने के लिए दूरदर्शिता थी - उदाहरण के लिए option(FOO_BUILD_SHARED "Build libfoo shared library" ON)
- जिसका अर्थ है कि मैं उन्हें सीएमके कमांड लाइन के माध्यम से सेट कर सकता हूं। लेकिन मैं कमांड लाइन के माध्यम से डिफ़ॉल्ट रूप से इसे ओवरराइड करना चाहता हूं।
मैंने से पहले set(FOO_BUILD_SHARED OFF)
करने का प्रयास किया है। इसका दूसरा और बाद के निर्माण प्रयासों के दौरान साझा लाइब्रेरी बनाने की कोशिश नहीं करने का असर पड़ता है, लेकिन पहले के दौरान नहीं, जिसे मुझे वास्तव में तेज़ करने की आवश्यकता है।
क्या यह संभव है, या मुझे इन परियोजनाओं के लिए फोर्क किए गए CMakeLists.txt को बनाए रखने की आवश्यकता है?
इसे add_subdirectory कमांड से पहले रखें, इसलिए यह चर के लिए डिफ़ॉल्ट मान सेट करेगा। – tibur
कभी-कभी आपको 'FORCE' – Rajish
प्रो टिप (स्वयं को) का उपयोग करने की आवश्यकता होती है: 'फोर्स' डॉक स्ट्रिंग के बाद चला जाता है, यादृच्छिक रूप से मध्य में नहीं ... – Claudiu