【问题标题】:How do I debug CMakeLists.txt files?如何调试 CMakeLists.txt 文件?
【发布时间】:2014-05-13 06:33:24
【问题描述】:

除了message 语句之外,是否有可能调试CMakeLists.txt 文件(至少列出变量)?

【问题讨论】:

标签: cmake


【解决方案1】:

没有用于 CMake 的交互式调试器,但也有标志 -Wdev--debug-output--trace 可能会有所帮助。还要记得检查日志文件 CMakeFiles\CMakeOutput.logCMakeFiles\CMakeError.log,它们主要收集 CMake 调用的进程的输出(例如在检查类型或标头是否存在时)。

Since version 3.7,CMake 现在正式支持“服务器模式”,因此在 IDE 中的集成可能会在不久的将来得到改进。 Qt CreatorVisual Studio 2017 RC 都存在初始支持

【讨论】:

  • 我们使用哪一个来调试CmakeList.txt 中的if 语句? came --debug ...cmake --debug-output ... 没有打印它们。在 Bash 中,等价于 bash -x <cmd>
  • @jww 我不能 100% 确定您要调试什么,但 --trace 的输出通常非常广泛(将输出重定向到文件!)
  • 我试图调试脚本并了解为什么某些代码块没有被输入。但我发现了问题:string(STRIP ...) 坏了。另见How to strip trailing newline in Cmake variable?。如果您不知道 bash -x 的作用,我深表歉意。
  • 你不应该只提到检查日志。您应该解释如何检查日志。
  • @ThomasJayRush 我添加了有关日志文件位置和内容的信息。除此之外的任何事情都取决于具体问题。
【解决方案2】:

您可以尝试使用VisualGDB 工具提供的新CMake 脚本调试器。它使用open-source fork of CMake,支持单步执行 CMakeLists.txt 文件、设置代码/数据断点、评估/更改变量等。

新的调试器here有详细的分步教程

【讨论】:

    【解决方案3】:

    我喜欢使用variable_watch 来“调试”我的 CMakeLists.txt 文件。只需在我的脚本顶部设置:

    variable_watch(SOME_MY_VAR)
    

    【讨论】:

      【解决方案4】:

      有 steveire 的CMake Daemon Tools。我自己没有使用过它们,但它们声称提供了似乎非常接近调试器的自省的可能性。

      编辑:它们现在称为CMake-server,是 CMake 3.7 的一部分。

      【讨论】:

        【解决方案5】:

        另外,阅读环境变量VERBOSE: https://cmake.org/cmake/help/latest/envvar/VERBOSE.html

        我是这样用的:

        export VERBOSE=defined
        make
        

        还有更多的冗长。

        在其他情况下,编辑CMakeLists.txt 文件以包含以下行:

        set(CMAKE_VERBOSE_MAKEFILE ON)
        

        (关于此的一些帖子是https://bytefreaks.net/programming-2/make-building-with-cmake-verbose)。

        此外,还有一些有用的cmake 选项控制调试输出,请参见手册页:https://cmake.org/cmake/help/latest/manual/cmake.1.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-02-16
          • 2020-01-13
          • 1970-01-01
          • 1970-01-01
          • 2022-08-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多