我将 CMake 与 GNU Make 一起使用,并希望准确查看所有命令(例如编译器的执行方式、所有标志等)。
GNU make has --debug
,但似乎没有那么有帮助,还有其他选择吗?CMake 是否在生成的 Makefile 中提供其他标志以用于调试目的?
运行 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 directory
and这样的行make[1]: Leaving directory
。
cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
将文件中的选项设置CMakeLists.txt
为:
set(CMAKE_VERBOSE_MAKEFILE ON)
或者简单地在 shell 上导出 VERBOSE 环境变量,如下所示:
export VERBOSE=1
如果您使用 CMake GUI,则切换到高级视图,然后该选项称为 CMAKE_VERBOSE_MAKEFILE。
我正在尝试类似的方法来确保-ggdb
标志存在。
在一个干净的目录中调用 make 并 grep 您正在寻找的标志。寻找debug
而不是ggdb
我只会写。
make VERBOSE=1 | grep debug
该-ggdb
标志非常模糊,只弹出编译命令。
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 缓存变量,则可以省略此选项。