添加编译选项

为源文件的编译添加选项。

add_compile_options(<option> ...)

添加选项到 COMPILE_OPTIONS 目录属性。从当前目录及以下目录编译目标时使用这些选项。

参数

add_compile_options 的参数可以使用语法为“$<...>”的生成器表达式。请参阅 cmake-generator-expressions(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

例子

由于不同的编译器支持不同的选项,此命令的典型用法是在特定于编译器的条件子句中:

if (MSVC)
    # warning level 4
    add_compile_options(/W4)
else()
    # additional warnings
    add_compile_options(-Wall -Wextra -Wpedantic)
endif()

要设置每种语言的选项,请使用 $<COMPILE_LANGUAGE>$<COMPILE_LANGUAGE:languages> 生成器表达式。

也可以看看

  • 此命令可用于添加任何选项。但是,为了添加预处理器定义和包含目录,建议使用更具体的命令:command:add_compile_definitions 和:command:include_directories

  • 命令 target_compile_options() 添加特定于目标的选项。

  • 源文件属性 COMPILE_OPTIONS 将选项添加到一个源文件。