我想知道是否有任何方法可以调试cmake
进程,从而迫使命令打印有关变量如何获得某些值的模式详细信息。例如,我看到
-- Boost version: 1.63.0
-- Boost version: 1.63.0
-- Found the following Boost libraries:
-- system
-- filesystem
-- timer
-- chrono
我想知道在哪里检查并找到该版本。
在运行set(CMAKE_VERBOSE_MAKEFILE ON)
之前,我已经在CMakeLists.txt
的第一行中添加了cmake ..
。但是,我看不到任何详细信息。
我正在bash编程中寻找诸如set -x
之类的东西。
答案 0 :(得分:1)
Cmake具有命令行选项--trace
,--trace-expand
和--trace-source=some_cmake_source
这些将为您提供非常详细的输出,并且如果您像这样开始cmake:
$cmake --trace-expand source_dir
将输出完整的配置过程,并将所有cmake变量替换为其值。由于输出量很大(从字面上看),我通常将其重定向到文件中,如下所示:
$cmake --trace-expand source_dir > trace.txt 2>&1
这会将包括错误消息在内的完整输出重定向到文件trace.txt
中。
如果您不希望输出完整的配置,而是一个特定的文件,则应使用--trace-source=some-source
,如下所示:
$cmake --trace-source=FindBoost.cmake source_dir
将输出该特定文件的执行情况(在这种情况下,它将显示搜索boost库的过程)
此外,设置CMAKE_VERBOSE_MAKEFILE
变量也无济于事,因为它在构建过程中控制详细程度,而不是配置。
最后,这是对cmake文档的引用:
答案 1 :(得分:0)
CMake提供--debug-output
和--trace
options,可从命令行运行时使用它们:
cmake --debug-output ..
或
cmake --trace ..
debug-output
选项可提供有关CMake如何遍历CMakeLists.txt文件结构的一些高级信息;也可以从CMake GUI进行设置(选项> 调试输出)。 trace
选项逐行转储CMake的处理(可能希望将此输出重定向到文件)。 trace
选项还带有trace-expand
和trace-source=<file>
风格,以扩展CMake变量并仅跟踪特定文件。
如果您使用trace
查找感兴趣的CMake文件和变量(例如BOOST
变量),则还可以使用variable_watch()
来帮助监视对该变量的更改,并将消息打印到屏幕上。