Usare CMake con GNU Make: Come posso vedere i comandi esatti?

Uso CMake con GNU Make e vorrei vedere tutti i comandi esattamente (per esempio come viene eseguito il compilatore, tutti i flag ecc.).

GNU make ha --debug , ma non sembra essere così utile ci sono altre opzioni? CMake fornisce flag aggiuntivi nel Makefile generato a scopo di debug?

Quando esegui make, aggiungi VERBOSE=1 per vedere l’output completo del comando. Per esempio:

 cmake . make VERBOSE=1 

Oppure puoi aggiungere -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON al comando cmake per l’output del comando verbose permanente dai Makefile generati.

 cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make 

Per ridurre un output forse meno interessante, ti consigliamo di utilizzare le seguenti opzioni. L’opzione CMAKE_RULE_MESSAGES=OFF rimuove le linee come [33%] Building C object … , mentre --no-print-directory dice make per non stampare la directory corrente filtrando le righe come make[1]: Entering directory e make[1]: Leaving directory .

 cmake -DCMAKE_RULE_MESSAGES:BOOL=OFF -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . make --no-print-directory 

È conveniente impostare l’opzione nel file CMakeLists.txt come:

 set(CMAKE_VERBOSE_MAKEFILE ON) 

Se si utilizza la GUI di CMake, passare alla visualizzazione avanzata e quindi l’opzione si chiama CMAKE_VERBOSE_MAKEFILE.

Stavo cercando qualcosa di simile per garantire che la bandiera -ggdb fosse presente.

Chiama make in una directory pulita e svuota la bandiera che stai cercando. Cercando il debug piuttosto che ggdb vorrei solo scrivere.

make VERBOSE=1 | grep debug

Il flag -ggdb era abbastanza oscuro da far -ggdb solo i comandi di compilazione.

O semplicemente esportare la variabile d’ambiente VERBOSE sulla shell in questo modo: export VERBOSE=1