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

时间:2016-06-03 21:03:20

标签: cmake

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

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

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

  

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

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

3 个答案:

答案 0 :(得分:0)

如果您想要源文件实际编译方式的最终输出,则需要查看生成的文件。我目前还真不知道更好的方法:

示例:

这是忍者多合的输出示例

build \ CMakeFiles \ impl-Release.ninja

此文件将列出所有编译定义,编译器标志,包含目录,对象目录等。

答案 1 :(得分:0)

在路径“ cmake-build-debug / CMakeFiles /”下,您将找到一个名为“ TopFolderOfYourProject.dir”的文件夹,该cmake将在其中生成其所有构建系统文件,包括文件“ build.make”。 ”。在此文件中,您可以看到以下内容:

CMakeFiles/somepath/somesourcefile.c
    @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=xxx\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/somepath/somesourcefile.c.obj"

除此之外,您还可以在文件“ flags.make ”中找到有关标志的更多信息,其中包含开发人员指定的所有其他编译器标志。

在“ includes_C.rsp / includes_CXX.rsp ”中,您可以看到包含路径。

答案 2 :(得分:-1)

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

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

get_source_file_property(RESULT file.cpp COMPILE_FLAGS)