Joe*_*Joe 51
没有为CMake的不交互式调试,但是也有标志-Wdev,--debug-output并--trace可能帮助.还记得检查日志文件CMakeFiles\CMakeOutput.log和CMakeFiles\CMakeError.log主要收集的由CMake的称为过程的输出(例如,同时检查一个类型或报头的存在下).
从版本3.7开始,CMake现在正式支持"服务器模式",因此IDE中的集成可能会在不久的将来得到改善.Qt Creator和Visual Studio 2017 RC都存在初始支持
我喜欢使用variable_watch来“调试”我的 CMakeLists.txt 文件。只需在我的脚本顶部设置:
variable_watch(SOME_MY_VAR)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 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 调试相关的工具包括:
要将 CMake 置于跟踪模式,打印所有调用以及从何处进行的调用,请使用标志--trace和/或相关标志--trace-expand,例如--trace-format、--trace-source和--trace-redirect。
要使 CMake 发出针对 CMakeLists.txt 作者的开发人员警告,请使用该-Wdev标志
要使 CMake 发出有关已弃用功能的警告,请使用该-Wdeprecated标志
要将 CMake 置于调试模式,在其中打印message(SEND_ERROR)调用的堆栈跟踪等内容,请使用该--debug-output标志
要监视变量的更改,请使用命令variable_watch。
要使 CMake 在使用未初始化的变量时发出警告,请使用标志--warn-uninitialized。
要调试查找诸如find_program()、find_library()、find_file()、find_path()和 之类的命令,find_package()请使用标志--debug-find,或者要在更细粒度的范围内进行调试,请使用变量CMAKE_FIND_DEBUG_MODE。
要调试try_compile/try_run失败,请使用该--debug-trycompile标志
如果您想对 CMake 脚本执行进行性能分析,请参阅--profiling-output和--profiling-output标志。
额外信息:如果您想分析构建性能,您可以查看工具链中的工具提供的设施,例如 Ninja 和 Clang。Craig Scott 在这里写了一篇关于该主题的文章:https://crascit.com/2022/06/24/build-performance-insights/。
您可以尝试使用VisualGDB工具提供的新CMake脚本调试器。它使用CMake的开源分支,该分支支持单步执行CMakeLists.txt文件,设置代码/数据断点,评估/更改变量等。
有一个详细的一步一步的教程在新的调试器在这里
| 归档时间: |
|
| 查看次数: |
44187 次 |
| 最近记录: |