我在GNU Make中使用CMake,并希望完全看到所有命令(例如编译器的执行方式,所有标志等)。
GNU make有--debug
,但它似乎没有任何其他选项有用吗? CMake是否在生成的Makefile中提供了额外的标志以进行调试?
答案 0 :(得分:313)
运行make时,添加VERBOSE=1
以查看完整的命令输出。例如:
cmake .
make VERBOSE=1
或者您可以将-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
添加到cmake命令,以便从生成的Makefile中输出永久详细命令。
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make
要减少一些可能不太有趣的输出,您可能希望使用以下选项。选项CMAKE_RULE_MESSAGES=OFF
删除 [33%] Building C object ... 之类的行,而--no-print-directory
告诉make不打印当前目录,过滤掉像{{1 }和make[1]: Entering directory
。
make[1]: Leaving directory
答案 1 :(得分:61)
将CMakeLists.txt
文件中的选项设置为:
set(CMAKE_VERBOSE_MAKEFILE ON)
答案 2 :(得分:7)
如果使用CMake GUI,则交换到高级视图,然后选项名为CMAKE_VERBOSE_MAKEFILE。
答案 3 :(得分:3)
或者只是像这样在外壳上导出VERBOSE环境变量:
export VERBOSE=1
答案 4 :(得分:2)
我正在尝试类似的事情以确保-ggdb
标志存在。
在一个干净的目录中调用make并grep您正在寻找的标志。正在寻找debug
而不是ggdb
。
make VERBOSE=1 | grep debug
-ggdb
标志模糊不清,只弹出了编译命令。
答案 5 :(得分:2)
cmake --build . --verbose
在Linux上以及生成Makefile的情况下,这很可能只是在幕后调用make VERBOSE=1
,但是cmake --build
对于您的构建系统来说更可移植,例如跨操作系统工作,或者您决定这样做(例如忍者以后的版本:
mkdir build
cd build
cmake ..
cmake --build . --verbose
其文档还建议它等同于VERBOSE=1
:
-verbose,-v
启用详细输出-如果支持-包括要执行的构建命令。
如果设置了VERBOSE环境变量或CMAKE_VERBOSE_MAKEFILE缓存的变量,则可以忽略此选项。