我使用CMake与GNU Make,并希望完全看到所有命令(例如编译器如何执行,所有标志等).
GNU make有--debug,但似乎没有任何其他选项有用吗?CMake是否在生成的Makefile中提供了额外的标志以进行调试?
ric*_*chq 351
运行make时,添加VERBOSE=1以查看完整的命令输出.例如:
cmake .
make VERBOSE=1
Run Code Online (Sandbox Code Playgroud)
或者,您可以-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON从生成的Makefile中添加cmake命令以获取永久详细命令输出.
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make
Run Code Online (Sandbox Code Playgroud)
要减少一些可能不太有趣的输出,您可能希望使用以下选项.该选项CMAKE_RULE_MESSAGES=OFF删除像[33%]构建C对象...这样的行,同时--no-print-directory告诉make不打印当前目录,过滤掉像make[1]: Entering directory和的行make[1]: Leaving directory.
cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
Run Code Online (Sandbox Code Playgroud)
Jam*_*orn 69
将CMakeLists.txt文件中的选项设置为:
set(CMAKE_VERBOSE_MAKEFILE ON)
Run Code Online (Sandbox Code Playgroud)
Cir*_*四事件 14
cmake --build . --verbose
在 Linux 上并使用 Makefile 生成,这可能只是make VERBOSE=1在幕后调用,但cmake --build对于您的构建系统来说更可移植,例如跨操作系统工作,或者如果您决定稍后进行 Ninja 构建:
mkdir build
cd build
cmake ..
cmake --build . --verbose
Run Code Online (Sandbox Code Playgroud)
它的文档还表明它相当于VERBOSE=1:
--详细,-v
启用详细输出 - 如果支持 - 包括要执行的构建命令。
如果设置了VERBOSE环境变量或 CMAKE_VERBOSE_MAKEFILE 缓存变量,则可以省略此选项。
在 Cmake 3.22.1、Ubuntu 22.04 上测试。
我正在尝试类似的方法来确保-ggdb旗帜存在。
在干净的目录中调用 make 并 grep 您要查找的标志。寻找debug而不是ggdb我只会写。
make VERBOSE=1 | grep debug
该-ggdb标志非常模糊,仅弹出编译命令。
CMake 现在必须--verbose指定详细的构建输出。无论您的发电机如何,这都有效。
cd project
cmake -B build/
cmake --build build --verbose
Run Code Online (Sandbox Code Playgroud)
值得注意的是,Xcode 可能无法与--verbose一起使用
Some generators such as Xcode don't support this option currently.
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用VERBOSE环境变量。
New in version 3.14.
Activates verbose output from CMake and your build tools of choice when you start to actually build your project.
Note that any given value is ignored. It's just checked for existence.
Run Code Online (Sandbox Code Playgroud)