2010-04-19 5 views
155

Io uso CMake con GNU Make e vorrei vedere tutti i comandi esattamente (per esempio come viene eseguito il compilatore, tutti i flag ecc.).Utilizzo di CMake con GNU Marca: come posso visualizzare i comandi esatti?

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?

+1

Oppure, per aggiungere alcuni termini di ricerca, Come nascondere righe di comando piene e dettagliate eseguite e mostrare solo terse percentuali di output colorato. – ulidtko

+0

Superset non CMake: http://stackoverflow.com/questions/5820303/how-do-i-force-make-gcc-to-show-me-thecomcomands –

risposta

214

Quando si esegue make, aggiungere VERBOSE=1 per visualizzare l'output completo del comando. Per esempio:

cmake . 
make VERBOSE=1 

Oppure si può aggiungere -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON al comando cmake per l'output del comando verbose permanente dal Makefile generato.

cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON . 
make 

Per ridurre alcuni output potenzialmente meno interessanti, è possibile utilizzare le seguenti opzioni. L'opzione CMAKE_RULE_MESSAGES=OFF rimuove le righe come [33%] Oggetto C edificio ..., mentre --no-print-directory indica di 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 
+7

Queste soluzioni lo rendono troppo prolisso, stampando un sacco di Crea e fai internals che non sono interessanti. Esiste un modo per mostrare solo i comandi di compilazione e di collegamento (ad esempio ciò che di solito è rilevante per i problemi di debug). Forse anche solo visualizzare il comando che ha fallito. – Tronic

+0

Il migliore hit di google consiglia ["se vuoi vedere solo le righe di comando g ++, dovresti usare grep & Co. - se possibile - in connessione con Makefile verbosi"] (https://cmake.org/pipermail/cmake/ 2011-maggio/044451.html). Forse gli sviluppatori con molta esperienza di cmake hanno altri consigli. –

+5

A proposito, se sei su una piattaforma che lo supporta 'cmake -GNinja. ; ninja -v' mostra un output prolisso molto dettagliato con lanugine minima. – richq

5

Se si utilizza la GUI CMake poi scambiare alla visualizzazione avanzata e quindi l'opzione si chiama CMAKE_VERBOSE_MAKEFILE.

+0

Come posso impostare questa opzione nei file di testo, senza utilizzare la GUI? – osgx

+0

basta aggiungere -DCMAKE_VERBOSE_MAKEFILE = ON al comando cmake –

39

E 'conveniente per impostare l'opzione nel file CMakeLists.txt come:

set(CMAKE_VERBOSE_MAKEFILE ON) 
0

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

Chiama make in una directory pulita e svuota la bandiera che stai cercando. Cerchi debug anziché ggdb Vorrei solo scrivere.

make VERBOSE=1 | grep debug

Il -ggdb bandiera era oscura sufficiente che solo i comandi di compilazione saltate fuori.