수색…


통사론

  • target_compile_features ( 대상 PRIVATE | PUBLIC | 인터페이스 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에 대해 대상 건물에 요구 사항을 자동으로 추가하려면 PRIVATE 대신 PUBLIC 또는 INTERFACE 사용해야합니다.

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)를 사용하여 C 및 C ++의 원 버전을 전역 적으로 지정할 수 있습니다.

set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 11)

이것들은 타겟에 필요한 컴파일 옵션을 추가합니다 (예 : gcc의 경우 -std=c++11 ).

버전은 각각 CMAKE_C_STANDARD_REQUIREDCMAKE_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