我使用CMake和GNU Make,想要确切地看到所有命令(例如编译器是如何执行的,所有的标志等)。
GNU make有——debug,但它似乎没有那么有用还有其他选项吗?CMake是否为调试目的在生成的Makefile中提供额外的标志?
我使用CMake和GNU Make,想要确切地看到所有命令(例如编译器是如何执行的,所有的标志等)。
GNU make有——debug,但它似乎没有那么有用还有其他选项吗?CMake是否为调试目的在生成的Makefile中提供额外的标志?
当前回答
Cmake——构建。——详细
在Linux和Makefile生成中,这可能只是在底层调用make VERBOSE=1,但是cmake——build可以更便于您的构建系统,例如跨操作系统工作,或者如果您决定稍后执行例如Ninja构建:
mkdir build
cd build
cmake ..
cmake --build . --verbose
它的文档还表明它等价于VERBOSE=1:
——详细- v 启用详细输出(如果支持),包括要执行的构建命令。 如果设置了VERBOSE环境变量或CMAKE_VERBOSE_MAKEFILE缓存变量,则可以省略此选项。
在Cmake 3.22.1, Ubuntu 22.04上测试。
其他回答
运行make时,添加VERBOSE=1以查看完整的命令输出。例如:
cmake .
make VERBOSE=1
或者您可以在cmake命令中添加-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON,用于生成的makefile的永久详细命令输出。
cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make
为了减少一些可能不太有趣的输出,您可能会使用以下选项。选项CMAKE_RULE_MESSAGES=OFF删除像[33%]Building C object…,而——no-print-directory告诉make不打印当前目录,过滤出像make[1]:进入目录和make[1]:离开目录这样的行。
cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON .
make --no-print-directory
如果您使用CMake GUI,则切换到高级视图,然后该选项被称为CMAKE_VERBOSE_MAKEFILE。
Cmake——构建。——详细
在Linux和Makefile生成中,这可能只是在底层调用make VERBOSE=1,但是cmake——build可以更便于您的构建系统,例如跨操作系统工作,或者如果您决定稍后执行例如Ninja构建:
mkdir build
cd build
cmake ..
cmake --build . --verbose
它的文档还表明它等价于VERBOSE=1:
——详细- v 启用详细输出(如果支持),包括要执行的构建命令。 如果设置了VERBOSE环境变量或CMAKE_VERBOSE_MAKEFILE缓存变量,则可以省略此选项。
在Cmake 3.22.1, Ubuntu 22.04上测试。
在CMakeLists.txt文件中设置选项是很方便的:
set(CMAKE_VERBOSE_MAKEFILE ON)
我尝试了类似的方法来确保-ggdb标志存在。
在一个干净的目录中调用make并grep您正在寻找的标志。寻找debug,而不是ggdb,我只会写。
make VERBOSE=1 | grep调试
-ggdb标志非常模糊,只弹出编译命令。