CMakeLists.txt
除消息语句外,是否可以调试文件(至少列出变量)?
Answers:
没有为CMake的不交互式调试,但是也有标志-Wdev
,--debug-output
并--trace
可能帮助。还要记住要检查日志文件CMakeFiles\CMakeOutput.log
,日志文件CMakeFiles\CMakeError.log
主要收集CMake调用的进程的输出(例如,在检查类型或标头的存在时)。
从3.7版开始,CMake现在正式支持“服务器模式”,因此IDE的集成在不久的将来可能会得到改善。Qt Creator和Visual Studio 2017 RC中都存在初始支持
if
语句CmakeList.txt
?came --debug ...
并且cmake --debug-output ...
不打印它们。在Bash中,等价于bash -x <cmd>
。
--trace
通常的输出范围很广(将输出重定向到文件!)
string(STRIP ...)
被打破了。另请参阅如何在Cmake变量中删除尾随换行符?。如果您不知道该怎么办bash -x
,我深表歉意。
您可以尝试使用VisualGDB工具提供的新的CMake脚本调试器。它使用CMake的开源分支,该分支支持单步执行CMakeLists.txt文件,设置代码/数据断点,评估/更改变量等。
有一个详细的一步一步的教程在新的调试器在这里
有steveire的CMake守护程序工具。我没有亲自使用过它们,但是它们声称提供了内省的可能性,这似乎非常接近调试器。
编辑:它们现在称为CMake服务器,并且是CMake 3.7的一部分。
我喜欢使用variable_watch来“调试”我的CMakeLists.txt文件。只需在我的脚本顶部设置:
variable_watch(SOME_MY_VAR)
另外,请阅读有关env var的信息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