编译功能要求
可以使用命令 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
)