cmake 命令的详细输出

mah*_*ood 9 cmake

我想知道是否有任何方法可以调试一个cmake进程,强制命令打印有关变量如何获取某些值的模式详细信息。例如,我看到

-- Boost version: 1.63.0
-- Boost version: 1.63.0
-- Found the following Boost libraries:
--   system
--   filesystem
--   timer
--   chrono
Run Code Online (Sandbox Code Playgroud)

我想知道在哪里检查和找到该版本。

我在运行之前添加了set(CMAKE_VERBOSE_MAKEFILE ON)第一行。但是,我没有看到任何详细消息。CMakeLists.txtcmake ..

set -x我正在寻找类似bash 编程的东西。

gor*_*kic 12

Cmake 有命令行选项--trace, --trace-expand, 和--trace-source=some_cmake_source

这些将为您提供非常详细的输出,如果您像这样启动 cmake:

$cmake --trace-expand source_dir
Run Code Online (Sandbox Code Playgroud)

将输出完整的配置过程,所有 cmake 变量都替换为其值。由于输出量很大(字面意思),我通常将其重定向到文件中,如下所示:

$cmake --trace-expand source_dir > trace.txt 2>&1
Run Code Online (Sandbox Code Playgroud)

这会将完整的输出(包括错误消息)重定向到文件中trace.txt

如果您不想输出完整的配置,而是想要输出一个特定文件,则应该使用--trace-source=some-source,如下所示:

$cmake --trace-source=FindBoost.cmake source_dir
Run Code Online (Sandbox Code Playgroud)

将输出该特定文件的执行情况(在本例中,它将显示搜索 boost 库的过程)

此外,设置CMAKE_VERBOSE_MAKEFILE变量对您没有帮助,因为它控制构建过程中的详细程度,而不是配置。

最后,这里是对 cmake 文档的引用:

cmake 命令行选项

CMAKE_VERBOSE_MAKEFILE