【问题标题】:Verbose output for cmake commandcmake 命令的详细输出
【发布时间】:2019-09-18 19:20:34
【问题描述】:

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

-- Boost version: 1.63.0
-- Boost version: 1.63.0
-- Found the following Boost libraries:
--   system
--   filesystem
--   timer
--   chrono

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

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

我在 bash 编程中寻找类似 @​​987654326@ 的东西。

【问题讨论】:

    标签: cmake


    【解决方案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

    【讨论】:

      【解决方案2】:

      CMake 提供了--debug-output--trace options,可以在命令行运行时使用:

      cmake --debug-output ..
      

      cmake --trace ..
      

      debug-output 选项提供了一些关于 CMake 如何遍历 CMakeLists.txt 文件结构的高级见解;这也可以从 CMake GUI 中设置(Options > Debug Output)。 trace 选项逐行转储 CMake 的处理(可能希望将此输出重定向到文件)。 trace 选项还带有 trace-expandtrace-source=<file> 风格,分别用于扩展 CMake 变量和仅跟踪特定文件。

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

      【讨论】:

        猜你喜欢
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        • 2017-05-29
        • 1970-01-01
        • 2023-03-31
        • 2011-08-08
        • 2018-10-26
        • 1970-01-01
        相关资源
        最近更新 更多