CMake में कमांड लाइन विकल्प जोड़ना


111

मैं CMake का उपयोग करके एक बड़ी लाइब्रेरी का निर्माण कर रहा हूं, और मैं चाहूंगा कि उपयोगकर्ता मेरी बिल्ड प्रक्रिया के कुछ हिस्सों को चुनिंदा रूप से सक्षम / अक्षम करें।

मैं अपने CMake बिल्ड में कमांड-लाइन विकल्प कैसे जोड़ सकता हूं, जैसे कि उपयोगकर्ता कुछ पसंद कर सकते हैं cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..?

जाहिरा तौर पर विकल्प कीवर्ड वैरिएबल बनाएगा जो सीएमके जीयूआई से सेट किया जा सकता है, लेकिन मैं यह पता नहीं लगा सकता कि कमांड लाइन से यह कैसे किया जाए।


अपने प्रश्न के लिए धन्यवाद, क्योंकि इसने मेरे प्रश्न का उत्तर दिया, जिसका उद्देश्य सीमेक विकल्प के उद्देश्य से है। इसलिए, अब मैं देख रहा हूं कि यह GUI के लिए है
truthadjustr

जवाबों:


161

हाँ, आपको optionकमांड का उपयोग करना चाहिए । आप कमांड लाइन से इस तरह से विकल्प सेट कर सकते हैं:

//CMakeLists.txt
option(MyOption "MyOption" OFF)

//Command line
cmake -DMyOption=ON MyProjectFolder

ध्यान दें कि -DMyOptionरास्ते से पहले आना चाहिए।


5
... और cmake MyProjectFolder -DMyOptionविकल्प को चालू (या बंद) नहीं करता
mabraham

डाल -MyOption MyProjectFolder से पहले और एक कोशिश करो?
updogliu

11
उपयोग -DMyOption=ONया -DMyOption=OFFचालू या बंद करने के लिए।
3-18 बजे kvanberendonck

मैंने अभी देखा कि जब मैं CMakeLists.txt में "set (NAME blahblah)" के साथ सेट की गई थर्ड पार्टी मॉड्यूल का निर्माण करने की कोशिश कर रहा था, तो cmake कमांड लाइन पर -DNAME = overridingValue के साथ ओवरराइड करने योग्य हैं
22

13

बस थोड़ा सा सुधार:

यदि आपके पास पास करने के लिए अन्य चर हैं, तो इसके प्रकार को इंगित करने की सिफारिश की जाती है:

//CMakeLists.txt
option(MyOption "MyOption" OFF)

//Command line
cmake -DMyOption:BOOL=ON MyProjectFolder -D...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.