target_compile_options

为目标添加编译选项。

target_compile_options(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

COMPILE_OPTIONSINTERFACE_COMPILE_OPTIONS 目标属性添加选项。这些选项用于编译给定的 <target>,该目标必须由诸如 add_executable()add_library() 的命令创建,并且不得是 别名目标

注意

这些选项在链接目标时未使用。请参阅 target_link_options() 命令。

参数

如果指定了 BEFORE,则内容将被添加到属性的开头而不是末尾。请参阅策略 CMP0101,该策略影响在某些情况下是否忽略 BEFORE

必须使用 INTERFACEPUBLICPRIVATE 关键字来指定后续参数的范围PRIVATEPUBLIC 项目将填充 <target>COMPILE_OPTIONS 属性。PUBLICINTERFACE 项目将填充 <target>INTERFACE_COMPILE_OPTIONS 属性。以下参数指定编译选项。对同一 <target> 的重复调用将按调用顺序添加项目。

版本 3.11 新增:允许在导入目标上设置 INTERFACE 项目。

target_compile_options 的参数可以使用语法 $<...> 的生成器表达式。有关可用表达式,请参阅 cmake-generator-expressions(7) 手册。有关定义构建系统属性的更多信息,请参阅 cmake-buildsystem(7) 手册。

选项去重

用于目标的最终选项集通过累积当前目标及其依赖项的使用要求的选项来构建。选项集经过去重以避免重复。

版本 3.12 新增:尽管对单个选项有益,但去重步骤可能会拆散选项组。例如,-option A -option B 变为 -option A B。可以使用类似 shell 的引用以及 SHELL: 前缀来指定一组选项。将删除 SHELL: 前缀,并使用 separate_arguments() UNIX_COMMAND 模式解析其余选项字符串。例如,"SHELL:-option A" "SHELL:-option B" 变为 -option A -option B

另请参阅