How do I debug CMakeLists.txt files?
除消息语句外,是否可以调试CMakeLists.txt文件(至少列出变量)?
-
可能也会有所帮助:stackoverflow.com/a/38869455/2799037
没有用于CMake的交互式调试器,但是也有可能有用的标志-Wdev,--debug-output和--trace。还要记住检查日志文件CMakeFiles\\CMakeOutput.log和CMakeFiles\\CMakeError.log,它们主要收集CMake调用的进程的输出(例如,在检查类型或标头的存在时)。
从3.7版开始,CMake现在正式支持"服务器模式",因此IDE的集成在不久的将来可能会得到改善。 Qt Creator和Visual Studio 2017 RC中都存在初始支持
-
我们用来调试CmakeList.txt中的if语句的哪一个? came --debug ...和cmake --debug-output ...不在打印它们。 在Bash中,等效值为bash -x 。
-
@jww Im不能100%地确定要调试的内容,但是--trace的输出通常非常广泛(将输出重定向到文件!)
-
我试图调试脚本并了解为什么未输入某些代码块。 但是我发现了问题:string(STRIP ...)坏了。 另请参见如何在Cmake变量中删除尾随换行符? 如果您不知道bash -x的功能,我深表歉意。
-
您不应该提及检查日志。 您应该说明如何检查日志。
-
@ThomasJayRush我添加了有关日志文件的位置和内容的信息。 除此之外,还取决于特定的问题。
您可以尝试使用VisualGDB工具提供的新CMake脚本调试器。它使用CMake的开源分支,该分支支持单步执行CMakeLists.txt文件,设置代码/数据断点,评估/更改变量等。
这里有关于新调试器的详细分步教程。
有steveire的CMake守护程序工具。我没有亲自使用过它们,但是它们声称提供了内省的可能性,这似乎非常接近调试器。
编辑:它们现在称为CMake服务器,并且是CMake 3.7的一部分。
另外,请阅读有关env var VERBOSE的信息:https://cmake.org/cmake/help/latest/envvar/VERBOSE.html
我用这种方式:
1 2
| export VERBOSE=defined
make |
并获得更多详细信息。
在其他情况下,编辑CMakeLists.txt文件以包括以下行:
1
| 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
我喜欢使用variable_watch来"调试"我的CMakeLists.txt文件。只需在脚本顶部设置: