target_compile_features¶
版本 3.1 中新增。
为目标添加期望的编译器特性。
target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
指定编译给定目标所需的编译器特性。如果该特性未在 CMAKE_C_COMPILE_FEATURES、CMAKE_CUDA_COMPILE_FEATURES 或 CMAKE_CXX_COMPILE_FEATURES 变量中列出,CMake 将报告错误。如果使用该特性需要额外的编译器标志,例如 -std=gnu++11,则该标志将自动添加。
必须使用 INTERFACE、PUBLIC 和 PRIVATE 关键字来指定特性的作用域。PRIVATE 和 PUBLIC 项将填充 <target> 的 COMPILE_FEATURES 属性。PUBLIC 和 INTERFACE 项将填充 <target> 的 INTERFACE_COMPILE_FEATURES 属性。对同一个 <target> 的重复调用将追加项。
3.11 版本新增: 允许在 导入目标 上设置 INTERFACE 项。
名为 <target> 的目标必须是由 add_executable() 或 add_library() 等命令创建的目标,并且不能是 别名目标。
target_compile_features 的参数可以使用生成器表达式,语法为 $<...>。有关可用的表达式,请参阅 cmake-generator-expressions(7) 手册。有关编译器特性和支持的编译器的列表,请参阅 cmake-compile-features(7) 手册。