cmake命令的详细输出

时间:2019-09-18 19:20:34

标签: cmake

我想知道是否有任何方法可以调试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之类的东西。

2 个答案:

答案 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文档的引用:

cmake command line options

CMAKE_VERBOSE_MAKEFILE

答案 1 :(得分:0)

CMake提供--debug-output--trace options,可从命令行运行时使用它们:

cmake --debug-output ..

cmake --trace ..

debug-output选项可提供有关CMake如何遍历CMakeLists.txt文件结构的一些高级信息;也可以从CMake GUI进行设置(选项> 调试输出)。 trace选项逐行转储CMake的处理(可能希望将此输出重定向到文件)。 trace选项还带有trace-expandtrace-source=<file>风格,以扩展CMake变量并仅跟踪特定文件。

如果您使用trace查找感兴趣的CMake文件和变量(例如BOOST变量),则还可以使用variable_watch()来帮助监视对该变量的更改,并将消息打印到屏幕上。