使用CMake和GNU Make:我怎样才能看到确切的命令?

我在GNU Make中使用了CMake,希望看到所有的命令(例如编译器是如何执行的,所有的标志等等)。

GNU make有--debug ,但似乎没有任何其他选项有帮助吗? 为了debugging的目的,CMake是否在生成的Makefile中提供了额外的标志?

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

 cmake . make VERBOSE=1 

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

 cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make 

为了减less一些可能不那么有趣的输出,你可能会喜欢使用下面的选项。 选项CMAKE_RULE_MESSAGES=OFF会删除像[33%] Building C object …这样的行 ,而--no-print-directory指示make不打印出像make[1]: Entering directory这样的过滤行的当前目录make[1]: Entering directory 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) 

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

我正在尝试类似的东西,以确保-ggdb标志存在。

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

make VERBOSE=1 | grep debug

-ggdb标志是足够模糊的,只有编译命令popup。