C++ 我如何知道CMake将哪些选项传递给GCC?

C++ 我如何知道CMake将哪些选项传递给GCC?,c++,gcc,cmake,C++,Gcc,Cmake,我正在尝试构建一个大型开源项目Clang,它在构建系统中使用CMake。我正在Windows上使用MinGW64 要生成的命令是: cmake --build . --config Debug --target clang 我的构建有问题,所以我想诊断发送给GCC的命令是什么。例如,我想知道是否设置了-g 如何查看CMake生成触发的GCC命令列表 VERBOSE=1使更多 例如: [ 14%] Building CXX object public_api/CMakeFiles/secr_ap

我正在尝试构建一个大型开源项目Clang,它在构建系统中使用CMake。我正在Windows上使用MinGW64

要生成的命令是:

cmake --build . --config Debug --target clang
我的构建有问题,所以我想诊断发送给GCC的命令是什么。例如,我想知道是否设置了-g

如何查看CMake生成触发的GCC命令列表

VERBOSE=1使更多

例如:

[ 14%] Building CXX object public_api/CMakeFiles/secr_api_tests.dir/tests/exception_test.cpp.o
cd /Users/rhodges/secr/netbeans-secr/public_api && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -I/Users/rhodges/secr/secr/public_api/src -I/Users/rhodges/secr/netbeans-secr/public_api/src -I/Users/rhodges/secr/secr/public_api/tests -I/Users/rhodges/secr/netbeans-secr/public_api/tests -isystem /Users/rhodges/secr/secr/public_api/include -isystem /Users/rhodges/secr/netbeans-secr/public_api/include -isystem /Users/rhodges/secr/netbeans-secr/target_local/include -isystem /Users/rhodges/secr/secr/valuelib/debug/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/debug/include -isystem /Users/rhodges/secr/secr/valuelib/data/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/data/include -isystem /Users/rhodges/secr/secr/valuelib/tuple/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/tuple/include -isystem /Users/rhodges/secr/secr/valuelib/immutable/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/immutable/include -isystem /Users/rhodges/secr/secr/valuelib/stdext/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/stdext/include  -std=gnu++14 -o CMakeFiles/secr_api_tests.dir/tests/exception_test.cpp.o -c /Users/rhodges/secr/secr/public_api/tests/exception_test.cpp
...
详细=1使更多

例如:

[ 14%] Building CXX object public_api/CMakeFiles/secr_api_tests.dir/tests/exception_test.cpp.o
cd /Users/rhodges/secr/netbeans-secr/public_api && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++    -I/Users/rhodges/secr/secr/public_api/src -I/Users/rhodges/secr/netbeans-secr/public_api/src -I/Users/rhodges/secr/secr/public_api/tests -I/Users/rhodges/secr/netbeans-secr/public_api/tests -isystem /Users/rhodges/secr/secr/public_api/include -isystem /Users/rhodges/secr/netbeans-secr/public_api/include -isystem /Users/rhodges/secr/netbeans-secr/target_local/include -isystem /Users/rhodges/secr/secr/valuelib/debug/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/debug/include -isystem /Users/rhodges/secr/secr/valuelib/data/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/data/include -isystem /Users/rhodges/secr/secr/valuelib/tuple/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/tuple/include -isystem /Users/rhodges/secr/secr/valuelib/immutable/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/immutable/include -isystem /Users/rhodges/secr/secr/valuelib/stdext/include -isystem /Users/rhodges/secr/netbeans-secr/valuelib/stdext/include  -std=gnu++14 -o CMakeFiles/secr_api_tests.dir/tests/exception_test.cpp.o -c /Users/rhodges/secr/secr/public_api/tests/exception_test.cpp
...
正如Richard Hodges所说,VERBOSE=1 make是主要的简便方法

另一种方法是将-DCMAKE\u EXPORT\u COMPILE\u COMMANDS=ON添加到您的CMake调用中,该调用将生成一个文件COMPILE\u COMMANDS.json,其中包含每个文件的编译标志的机器可读数据库。

正如Richard Hodges所说,VERBOSE=1 make是主要的简便方法


另一种方法是将-DCMAKE\u EXPORT\u COMPILE\u COMMANDS=ON添加到您的CMake调用中,该调用将生成一个文件COMPILE\u COMMANDS.json,其中包含每个文件的编译标志的机器可读数据库。

只需打开makefile并查看。@IvanRubinson在我的系统上为LLVM+clang3.8生成的makefile CMake文件有9400多行。那就好好享受吧。XD只需打开makefile并查看。@IvanRubinson在我的系统上为LLVM+clang3.8生成的makefile CMake有9400多行。那就好好享受吧。这并不完全是性别歧视。我要说的是命令主义!!反对VERBOSE=1的理由是什么?不要歧视它-@skypjack打字更多是一个30年的习惯:当vi被认为是最先进的技术时,我正在使用unix…现在不是这样了吗?我仍在尝试退出,而且我从未被更新过外面的世界!!:-不完全是性别歧视。我要说的是命令主义!!反对VERBOSE=1的理由是什么?不要歧视它-@skypjack打字更多是一个30年的习惯:当vi被认为是最先进的技术时,我正在使用unix…现在不是这样了吗?我仍在尝试退出,而且我从未被更新过外面的世界!!:-