2017-01-13 19 views
1

我的目标是查看从命令行直接调用cmake调用g++的详细信息。就本问题而言,我不关心make的输出。为什么`cmake --verbose = 1`给出详细的cmake输出,但是`cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL = ON`不是?

根据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

不,这不是您接受的答案和您链接的CMake常见问题解答,否则我会感到惊讶。
准确地说,他们不会说你应该修改CMakeCache.txt不要修改该文件,这不是一个好习惯,因为人们可以很容易犯错
如果改为遵循正是这两个消息来源说,即

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . 
make 

cmake . 
make VERBOSE=1 

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

set(CMAKE_VERBOSE_MAKEFILE on) 

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


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

+0

我应该提到我尝试将该标志添加到命令行并将其直接放入CMakeCache.txt中。我将在未来避免修改该特定文件。 – Cliabhach

+0

让我添加一些示例输出到我的问题 – Cliabhach

+0

好的。对于我来说,身体并不清楚,这就是为什么我被标题说一件事和身体提到另一种做法所困扰的原因......; – fedepad