获取构建命令或将用于构建目标的所有编译器标志

Pra*_*tic 15 cmake

是否有一种合理的方法来获取包含构建命令的CMake变量或CMake将与目标关联的所有编译器标志?

尝试收集和维护可以添加标志的所有属性的列表似乎不切实际.此外,CMake必须在某处拥有此信息,因为它必须最终生成构建系统.

CMake文档看起来这个功能曾经存在并且是通过调用提供的,build_command()但是它被替换了:

注意在3.0之前的CMake版本中,此命令返回一个命令行,该命令行直接调用当前生成器的本机构建工具.

是否有一个新命令可以提供旧的行为build_command()

arr*_*owd -1

实际上,构建标志与源文件相关联,因为不同的文件可以有不同的标志。另一方面,在大多数情况下,这些标志是等效的。

无论如何,要获取源文件的所有构建标志,您可以使用COMPILE_FLAGS属性:

get_source_file_property(RESULT file.cpp COMPILE_FLAGS)
Run Code Online (Sandbox Code Playgroud)

  • 目标或该目标中使用的源的“COMPILE_FLAGS”属性不会评估将使用的构建标志的完整列表。我只是在目标上尝试了一下,以确保如果设置了“INCLUDE_DIRECTORIES”和“COMPILE_DEFINITIONS”等属性,则不会设置“COMPILE_FLAGS”属性。对于目标中使用的随机源文件也是如此。就像 CMake 文档所说,它看起来像“COMPILE_FLAGS”是用于“附加”标志——它不会评估将使用的所有标志。 (12认同)