कमांड लाइन पर CMake विकल्प () कैसे सेट करें


93

मैंने एक CMakeLists.txt बनाया जिसमें निम्नलिखित शामिल हैं

project(P4V)
cmake_minimum_required(VERSION 2.6)

option(BUILD_STATIC_LIBS "Build the static library" ON)
option(BUILD_SHARED_LIBS "Build the shared library" ON)
option(BUILD_TESTS "Build test programs" OFF)

include_directories(${CMAKE_SOURCE_DIR}/include)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_BUILD_TYPE Release)

add_subdirectory(src)
if(BUILD_TESTS)
    add_subdirectory(tests)
endif(BUILD_TESTS)

डिफ़ॉल्ट रूप से BUILD_TESTS बंद है, मैं इसे CMake GUI के बिना कैसे चालू कर सकता हूं, लेकिन स्वयं cmake कमांड के साथ? मैंने निम्नलिखित की कोशिश की, लेकिन यह काम नहीं करता है

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON

24
अपने झंडे को ..तर्क से पहले सूचीबद्ध करें ।
अरुण

2
के संभावित डुप्लिकेट stackoverflow.com/questions/5998186/...
dharman

5998186 बिंदुओं के जवाब के रूप में यह 'cmake MyProjectFolder -DMyOption = ON' है
लैंगले

1
क्या आपने cmakeCache.txt को फिर से cmake से पहले हटा दिया है?
हेनरी हू

जवाबों:


101

CMakeCache.txt फ़ाइल को हटाएँ और इसे आज़माएँ:

cmake -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON ..

आपको पथ शामिल करने से पहले अपनी सभी कमांड-लाइन परिभाषाएं दर्ज करनी होंगी।


कैसे विशेष रूप से बंद निर्दिष्ट करने के लिए? मैं अभी CUDA विकल्प को बंद नहीं कर सकता।
17बे इसाक

7
@ Explicitbe-isaac यदि आप स्पष्ट रूप से एक विकल्प को बंद करना चाहते हैं तो बस उपयोग करें -DOPTION=OFF
टॉम मेल्कोच

ऐसा लगता है कि अब आपको पथ से पहले विकल्पों को पास नहीं करना है: cmake .. -G <whatever> -DOPTION=ONमेरे लिए CMake 3.16.2 के साथ ठीक काम करता है।
अलेक्जेंडर रेवो

8

एक अतिरिक्त विकल्प आपके बिल्ड फ़ोल्डर में जाना और कमांड का उपयोग करना है ccmake .

यह GUI जैसा है लेकिन टर्मिनल आधारित है। यह स्पष्ट रूप से एक इंस्टॉलेशन स्क्रिप्ट के साथ मदद नहीं करेगा लेकिन कम से कम इसे यूआई के बिना चलाया जा सकता है।

मेरे पास एक चेतावनी यह है कि आप कभी-कभी आपको चेतावनी देते समय उत्पन्न नहीं होने देंगे। अगर ऐसा है, तो इंटरफ़ेस से बाहर निकलें और कॉल करेंcmake .


ओपी विशेष रूप से "नो जीयूआई" के लिए कहता है।
sancho.s ReinstateMonicaCellio

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.