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
项将填充 COMPILE_FEATURES
的 <target>
属性。PUBLIC
和 INTERFACE
项将填充 INTERFACE_COMPILE_FEATURES
的 <target>
属性。对同一 <target>
的重复调用会追加项。
在 3.11 版本中添加: 允许在 IMPORTED 目标 上设置 INTERFACE
项。
命名的 <target>
必须已通过诸如 add_executable()
或 add_library()
之类的命令创建,并且不得是 ALIAS 目标。
有关定义构建系统属性的更多信息。
target_compile_features
的参数可以使用生成器表达式,语法为 $<...>
。 有关可用表达式,请参阅 cmake-generator-expressions(7)
手册。 有关编译特性和受支持编译器列表的信息,请参阅 cmake-compile-features(7)
手册。