在GNU Make中使用CMake:如何查看确切的命令?

时间:2010-04-19 19:19:07

标签: cmake gnu-make

我在GNU Make中使用CMake,并希望完全看到所有命令(例如编译器的执行方式,所有标志等)。

GNU make有--debug,但它似乎没有任何其他选项有用吗? CMake是否在生成的Makefile中提供了额外的标志以进行调试?

6 个答案:

答案 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缓存的变量,则可以忽略此选项。