target_compile_features

3.1 版本中添加。

向目标添加预期的编译器功能。

target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])

指定编译给定目标时所需的编译器功能。如果功能未在 CMAKE_C_COMPILE_FEATURESCMAKE_CUDA_COMPILE_FEATURESCMAKE_CXX_COMPILE_FEATURES 变量中列出,则 CMake 会报告错误。如果使用该功能需要额外的编译器标记(例如 -std=gnu++11),该标记将自动添加。

需要 INTERFACEPUBLICPRIVATE 关键字来指定功能范围。PRIVATEPUBLIC 项将填充 <target>COMPILE_FEATURES 属性。PUBLICINTERFACE 项将填充 <target>INTERFACE_COMPILE_FEATURES 属性。对同一个 <target> 进行的重复调用将附加项。

3.11 版本中添加:允许在 导入的目标 上设置 INTERFACE 项。

命名的 <target> 必须由命令(例如 add_executable()add_library())创建,且不得是 别名目标

有关定义构建系统属性的更多信息。

target_compile_features 的参数可以使用生成器表达式,其语法为 $<...>。有关可用表达式的详细信息,请参见手册 cmake-generator-expressions(7)。有关编译功能和受支持编译器列表,请参见手册 cmake-compile-features(7)

另请参见