2015-06-12 7 views
7

mi sento quasi stupido per chiedere questo, ma non ho trovato nulla su questo ...Come si elencano i target di make definiti dalla riga di comando?

Supponiamo che io sono un progetto CMake che contiene una serie di obiettivi: librerie, eseguibili, target esterni, .... Come li elenco usando l'interfaccia della riga di comando cmake. Voglio una lista di cose che sono valide per sostituire $target nella seguente riga di comando.

cmake . && cmake --build . --target $target 

di di punti bonus per una soluzione che utilizza né grep, né trovare né pitone né perl né ... Lot - si ottiene l'idea.

risposta

9

Per gli ambienti di generatore di costruire Makefile si potrebbe usare

cmake.exe --build . --target help 

e c'è la soluzione di output grafico (ad esempio trovati here):

cmake.exe . --graphviz=test.graph 
dotty test.graph 

Vedi anche Generating Dependency Graphs with CMake e CMake Graphviz Output Cleaner.

Se non avete dotty installato, si può ancora fare le dipendenze bersaglio visibile consentendo GLOBAL_DEPENDS_DEBUG_MODE nel vostro CMakeLists.txt:

set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) 

Il disadavantage qui è che non si può attivare dalla riga di comando . Si visualizzerà sempre su stderr durante la generazione dell'ambiente di creazione.

Riferimenti

+0

Beh, sarebbe bello avere qualcosa che è agnostico del generatore sottostante, ma creare opere per me. Non mi piace molto la soluzione di output grafico poiché richiede dotty che considero peggiore di perl, grep e bash perché non viene fornito nell'installazione predefinita di qualsiasi sistema che utilizzo. Continuerò a assegnare i punti per la soluzione basata su make. – Holger

+0

Grazie. Ho aggiunto informazioni per l'utilizzo della proprietà globale 'GLOBAL_DEPENDS_DEBUG_MODE'. Funzionerà senza 'dotty' e anche senza l'opzione della riga di comando' --graphviz'. E - anche perché in CMake mi mancava ancora - ho intenzione di pubblicare una richiesta di funzionalità per l'opzione della riga di comando '--list-all-targets' sul bug tracker di CMake. Ti terrò aggiornato qui se avrò un feedback positivo. – Florian

+4

Nota che '' cmake --build. --target help'' è praticamente lo stesso di '' make help'' – Ignitor