如何调试CMakeLists.txt文件?

Pet*_*ter 66 cmake

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

Joe*_*Joe 51

没有为CMake的不交互式调试,但是也有标志-Wdev,--debug-output--trace可能帮助.还记得检查日志文件CMakeFiles\CMakeOutput.logCMakeFiles\CMakeError.log主要收集的由CMake的称为过程的输出(例如,同时检查一个类型或报头的存在下).

从版本3.7开始,CMake现在正式支持"服务器模式",因此IDE中的集成可能会在不久的将来得到改善.Qt CreatorVisual Studio 2017 RC都存在初始支持

  • 您不应该只提到检查日志。您应该解释如何检查日志。 (2认同)

lea*_*ika 7

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

variable_watch(SOME_MY_VAR)
Run Code Online (Sandbox Code Playgroud)


sta*_*all 7

如果您使用的是 IDE,

与此相关的是,CMake 3.27 公开了使用Debug Adapter Protocol启用交互式调试标志--debugger。另参见旗帜旗帜--cmake-debugger-pipe--debugger-dap-log

否则,

在 CMake v3.26 之前,您可以(根据 CMake 诊断消息的建议)查看生成的构建系统的 binary/build 目录中的 CMakeFiles/CMakeOutput.log 和 CMakeFiles/CMakeError.log 文件。

从 CMake v3.26 开始,将不再支持/创建 CMakeFiles/CMakeOutput.log 和 CMakeFiles/CMakeError.log 文件。从发行说明来看:

CMakeFiles/CMakeOutput.log 和 CMakeFiles/CMakeError.log 文件不再由 CMake 的内置模块填充。cmake(1)不再建议在发生 CMake 错误后查看它们。之前记录到这些文件的信息将记录到cmake-configure-log(7)

您可能会发现有用的其他与 CMake 调试相关的工具包括:

额外信息:如果您想分析构建性能,您可以查看工具链中的工具提供的设施,例如 Ninja 和 Clang。Craig Scott 在这里写了一篇关于该主题的文章:https://crascit.com/2022/06/24/build-performance-insights/


Iva*_*kov 6

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

有一个详细的一步一步的教程在新的调试器在这里


usr*_*567 5

有steveire的CMake守护程序工具。我没有亲自使用过它们,但是它们声称提供了内省的可能性,这似乎非常接近调试器。

编辑:它们现在称为CMake服务器,并且是CMake 3.7的一部分。