为什么`cmake --verbose = 1`给出详细的cmake输出,但是`cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL = ON`没有给出?

Cli*_*ach 4 cmake

我的目标是查看有关从命令行g++直接调用by的详细信息cmake。我不在乎make此问题的输出。

根据官方的FAQ有关相关问题的公认答案,我应该确保例如通过传递命令行标志CMAKE_VERBOSE_MAKEFILE:BOOL=ON来设置生成的内容。当我这样做时,它重新查询了一堆属性,但是没有提供有关调用的更多信息。CMakeCache.txt-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON

但是,cmake用旗帜打电话--verbose=1给我的正是我所需要的。

这两种选择的作用不同?是否--verbose=1已弃用或不鼓励使用?

fed*_*pad 6

不,这不是您接受的答案和您链接的CMake FAQ所说的,否则我会感到惊讶。
确切地说,他们没有说您应该修改CMakeCache.txt不要修改该文件,这不是一个好习惯,因为这样很容易出错
相反,如果您完全遵循两个来源所说的话,即

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make
Run Code Online (Sandbox Code Playgroud)

要么

cmake .
make VERBOSE=1
Run Code Online (Sandbox Code Playgroud)

您会在编译和链接阶段看到详细的输出。
另外,如果将以CMakeLists.txt下行放入文件中,则应达到相同的效果:

set( CMAKE_VERBOSE_MAKEFILE on )
Run Code Online (Sandbox Code Playgroud)

在其中一种情况下看不到输出的事实可能是由于先前缓存的配置。
我建议您在可能的情况下进行源代码外构建,以便在这种情况下,只需删除构建目录即可摆脱CMake生成的每个文件和目录。
然后,您可以重新创建新配置,而不会受到先前生成的配置和构建文件的干扰。
当然,我可能错了,您遇到了一个错误,但这似乎不太可能。


编辑:那是因为在配置阶段您没有编译,即您没有使用Makefile,这是命令行选项设置的内容。cmake在项目构建的任何阶段(配置,编译,安装),命令本身都不是一个冗长的选项。当您执行此操作时,它不会显示其他配置信息,cmake .但应显示您的其他信息make
所以CMAKE_VERBOSE_MAKEFILE是错误的选择,如果你想获得详细的CMake从自身输出设置。

  • 那么从CMake本身获取详细输出的正确选项是什么? (2认同)
  • @PeterMortensen,您需要直接使用“--verbose=1”标志调用“cmake”。 (2认同)
  • 正如OP中的OP所包含的那样,他正在寻找详细的cmake,这是通过 cmake --verbose=1 实现的,而不是这个答案给出的 (2认同)