322

我将 CMake 与 GNU Make 一起使用,并希望准确查看所有命令(例如编译器的执行方式、所有标志等)。

GNU make has --debug,但似乎没有那么有帮助,还有其他选择吗?CMake 是否在生成的 Makefile 中提供其他标志以用于调试目的?

4

6 回答 6

425

运行 make 时,添加VERBOSE=1以查看完整的命令输出。例如:

cmake .
make VERBOSE=1

或者,您可以将-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON生成的 Makefile 中的永久详细命令输出添加到 cmake 命令中。

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make

为了减少一些可能不太有趣的输出,您可能希望使用以下选项。该选项CMAKE_RULE_MESSAGES=OFF删除像[ 33%] Building C object... 这样的行,同时--no-print-directory告诉 make 不要打印出当前目录,过滤掉像make[1]: Entering directoryand这样的行make[1]: Leaving directory

cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
于 2010-04-20T07:33:01.517 回答
94

将文件中的选项设置CMakeLists.txt为:

set(CMAKE_VERBOSE_MAKEFILE ON)
于 2015-11-16T17:30:56.437 回答
11

或者简单地在 shell 上导出 VERBOSE 环境变量,如下所示: export VERBOSE=1

于 2018-06-26T06:35:50.413 回答
7

如果您使用 CMake GUI,则切换到高级视图,然后该选项称为 CMAKE_VERBOSE_MAKEFILE。

于 2010-04-20T07:43:12.377 回答
4

我正在尝试类似的方法来确保-ggdb标志存在。

在一个干净的目录中调用 make 并 grep 您正在寻找的标志。寻找debug而不是ggdb我只会写。

make VERBOSE=1 | grep debug

-ggdb标志非常模糊,只弹出编译命令。

于 2016-12-06T07:24:59.510 回答
3

cmake --build . --verbose

在 Linux 和使用 Makefile 生成时,这可能只是make VERBOSE=1在后台调用,但cmake --build对于您的构建系统来说可能更便携,例如跨操作系统工作,或者如果您决定稍后进行 Ninja 构建:

mkdir build
cd build
cmake ..
cmake --build . --verbose

它的文档还表明它相当于VERBOSE=1

--详细,-v

启用详细输出 - 如果支持 - 包括要执行的构建命令。

如果设置了VERBOSE环境变量或 CMAKE_VERBOSE_MAKEFILE 缓存变量,则可以省略此选项。

于 2020-09-01T15:06:18.003 回答