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 版本加入: 允许在 IMPORTED 目标上设置 INTERFACE 项。

命名的 <target> 必须由诸如 add_executable()add_library() 的命令创建,并且不能是 ALIAS 目标

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

另请参阅