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

时间:2017-01-13 22:22:38

标签: cmake

我的目标是查看g++从命令行直接调用cmake的详细信息。出于这个问题的目的,我并不关心make的输出。

根据official FAQthe accepted answer on a related question,我应该确保在我生成的CMAKE_VERBOSE_MAKEFILE:BOOL=ON中设置CMakeCache.txt,例如传递命令行标志-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON。当我这样做时,它重新查询了一堆属性,但没有提供有关调用的额外信息。

然而,使用标记cmake调用--verbose=1向我展示了我需要的内容。

这两种选择有何不同?是--verbose=1已被弃用还是不鼓励?

1 个答案:

答案 0 :(得分:5)

不,那不是您接受的答案和您链接的CMake常见问题所说的,否则我会感到惊讶。
确切地说,他们并不是说应该修改CMakeCache.txt不要修改该文件,这不是一个好习惯,因为很容易犯错误
如果您反而完全按照两个来源所说的那样,即

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

cmake .
make VERBOSE=1

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

set( CMAKE_VERBOSE_MAKEFILE on )

您在其中一种情况下看不到输出的事实可能是由于先前缓存的配置造成的 我建议你尽可能做源外构建,这样在这种情况下你可以通过删除构建目录来摆脱每个CMake生成的文件和目录。
然后,您可以重新创建新配置,而不会受到先前生成的配置和构建文件的干扰 当然,我可能错了,你遇到了一个bug,但似乎不太可能。

编辑:这是因为在配置阶段你没有编译,即你没有使用Makefile,这就是命令行选项的设置。在项目构建的任何阶段(配置,编译,安装),cmake命令本身并不是一个冗长的选项。执行cmake .时,它不会显示额外的配置信息,但在运行make时应显示额外信息。
因此,如果您想从CMake本身获取详细输出,CMAKE_VERBOSE_MAKEFILE是错误的选项。