cmake
컴파일 기능 및 C / C ++ 표준 선택
수색…
통사론
- 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_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