是否有一种合理的方法来获取包含构建命令的CMake变量或CMake将与目标关联的所有编译器标志?
尝试收集和维护可以添加标志的所有属性的列表似乎不切实际。此外,CMake必须在某处拥有此信息,因为它必须最终生成构建系统。
从CMake docs看起来这个功能曾经存在过,并且是通过调用build_command()
提供的,但是已被替换:
注意在3.0之前的CMake版本中,此命令返回了一个命令 直接调用当前构建工具的行 发生器。
是否有一个新命令可以提供build_command()
的旧行为?
答案 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)