2016-07-04 11 views
1

Ich versuche ein großes Open-Source-Projekt (Clang) zu erstellen, das CMake in seinem Build-System verwendet. Ich verwende MinGW64 unter Windows.Woher weiß ich, welche Optionen von CMake an GCC übergeben werden?

Der Befehl zu bauen ist:

cmake --build . --config Debug --target clang 

Ich habe Probleme mit dem Build, die so würde ich diagnostizieren, was sind Befehle an GCC gesendet werden. Zum Beispiel würde ich gerne wissen, ob -g gesetzt ist.

Wie kann ich die Liste der GCC-Befehle sehen, die ein CMake-Build auslöst?

+0

Öffnen Sie einfach das Makefile und sehen Sie. –

+2

@IvanRubinson Das Makefile CMake generiert für LLVM + clang3.8 auf meinem System hat mehr als 9400 Zeilen. Also viel Spaß damit. XD –

Antwort

4

VERBOSE=1 make | more

Beispiel:

[ 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 
... 
+0

Nicht genau Sexismus. Ich würde sagen * Befehl-Ism * !! Was gegen 'VERBOSE = 1 make | weniger? Unterscheide nicht. :-) – skypjack

+2

@skypjack tippt 'more' ist eine 30 Jahre alte Gewohnheit :) Ich benutzte Unix, wenn' vi' als Stand der Technik betrachtet wurde ... –

+0

Ist es nicht mehr heutzutage? Ich versuche immer noch, es zu beenden, und ich bin nie über die Welt von dort draußen aktualisiert worden !! :-) – skypjack

1

Als Richard Hodges sagte VERBOSE=1 make ist die wichtigste praktische Möglichkeit, es zu tun.

Eine weitere Möglichkeit besteht darin, -DCMAKE_EXPORT_COMPILE_COMMANDS=ON zu Ihrem CMake-Aufruf hinzuzufügen, der eine Datei compile_commands.json mit einer maschinenlesbaren Datenbank mit Kompilierungsflags pro Datei generiert.