我正在尝试构建一个在其构建系统中使用CMake的大型开源项目(Clang)。我在Windows上使用MinGW64。
构建命令是:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item
android:title="@string/share"
android:id="@+id/menu_item_share"
android:showAsAction="always"
android:icon="@drawable/share"
/>
<item
android:id="@id/menu_item_refresh"
android:title="Refresh"
android:showAsAction="never"
android:icon="@drawable/refresh"
/>
<item
android:id="@+id/share_this_app"
android:title="Share this app"
android:showAsAction="never"
android:actionProviderClass="android.widget.ShareActionProvider"/>
我遇到了构建问题,所以我想诊断哪些命令被发送到GCC。例如,我想知道是否设置了cmake --build . --config Debug --target clang
。
如何查看CMake构建触发的GCC命令列表?
答案 0 :(得分:4)
VERBOSE=1 make | more
示例:
[ 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 :(得分:1)
正如Richard Hodges所说,VERBOSE=1 make
是实现这一目标的主要方式。
另一种方法是将-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
添加到您的CMake调用中,该调用将生成一个文件compile_commands.json
,其中包含每个文件的机器可读数据库。