如何调试CMakeLists.txt文件?


Answers:


62

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

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


我们使用哪一个调试if语句CmakeList.txtcame --debug ...并且cmake --debug-output ...不打印它们。在Bash中,等价于bash -x <cmd>
jww

@jww我不是100%不确定要尝试调试的内容,但--trace通常的输出范围很广(将输出重定向到文件!)
Joe

我试图调试脚本并了解为什么未输入某些代码块。但是我发现了问题:string(STRIP ...)被打破了。另请参阅如何在Cmake变量中删除尾随换行符?。如果您不知道该怎么办bash -x,我深表歉意。
jww

您不应该只提到检查日志。您应该说明如何检查日志。
Thomas Jay Rush

@ThomasJayRush我添加了有关日志文件的位置和内容的信息。除此之外,还取决于特定的问题。




2

另外,请阅读有关env var的信息VERBOSEhttps : //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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.