खोज…


वाक्य - विन्यास

  • target_compile_features (लक्ष्य निजी | पब्लिक | इंटरफ़ेस feature1 [feature2 ...])

संकलित सुविधा आवश्यकताएँ

आवश्यक संकलक सुविधाओं को एक लक्ष्य पर प्रयोग करके निर्दिष्ट किया जा सकता है कमांड target_compile_features :

add_library(foo
    foo.cpp
)
target_compile_features(foo
    PRIVATE          # scope of the feature
    cxx_constexpr    # list of features
)

विशेषताएं CMAKE_C_COMPILE_FEATURES या CMAKE_CXX_COMPILE_FEATURES का हिस्सा होनी चाहिए; cmake अन्यथा एक त्रुटि की रिपोर्ट करता है। Cmake लक्ष्य के संकलन विकल्पों में -std=gnu++11 जैसे किसी भी आवश्यक झंडे को जोड़ देगा।

उदाहरण में, सुविधाओं को PRIVATE घोषित किया गया है: आवश्यकताओं को लक्ष्य में जोड़ा जाएगा, लेकिन इसके उपभोक्ताओं को नहीं। स्वचालित रूप से foo के खिलाफ एक लक्ष्य निर्माण के लिए आवश्यकताओं को जोड़ने के लिए, PUBLIC या INTERFACE के बजाय इस्तेमाल किया जाना चाहिए PRIVATE :

target_compile_features(foo
    PUBLIC    # this time, required as public
    cxx_constexpr
)

add_executable(bar
    main.cpp
)
target_link_libraries(bar
    foo       # foo's public requirements and compile flags are added to bar
)

सी / सी ++ संस्करण चयन

C और C ++ के लिए वांटेड संस्करण क्रमशः CMAKE_C_STANDARD (स्वीकृत मान 98, 99 और 11 हैं) और CMAKE_CXX_STANDARD का उपयोग करके निर्दिष्ट किया जा सकता है (स्वीकृत मान 98, 11 और 14 हैं:

set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)

ये लक्ष्य पर आवश्यक संकलन विकल्प जोड़ देंगे (उदाहरण के लिए -std=c++11 gcc के लिए)।

संस्करण को क्रमशः चर CMAKE_C_STANDARD_REQUIRED और CMAKE_CXX_STANDARD_REQUIRED ON सेट करके एक आवश्यकता बनाई जा सकती है।

लक्ष्य निर्माण से पहले चरों को सेट किया जाना चाहिए। संस्करण को प्रति-लक्ष्य भी निर्दिष्ट किया जा सकता है:

set_target_properties(foo PROPERTIES
    CXX_STANDARD 11
    CXX_STANDARD_REQUIRED ON
)


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow