2012-02-15 12 views
145

Mi chiedo se esiste un modo per stampare tutte le variabili accessibili in CMAKE. Non sono interessato alle variabili CMAKE, come nell'opzione --help-variables. Sto parlando delle mie variabili che ho definito, o delle variabili definite dagli script inclusi.CMAKE: Stampa tutte le variabili accessibili in uno script

Attualmente sto tra cui

INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)

e speravo che ho potuto solo stampare tutte le variabili che sono qui, invece di dover passare attraverso tutti i file e leggere ciò che era disponibile - I potrebbe trovare alcune variabili che non conoscevo potrebbe essere utile. Sarebbe utile aiutare a scoprire la scoperta &. È strettamente per il debug/lo sviluppo.

simile alla domanda in Print all local variables accessible to the current scope in Lua ma per CMake!

Qualcuno ha fatto questo?

risposta

236

Utilizzando la funzione get_cmake_property il seguente ciclo stamperà tutte le variabili CMake definiti ed i loro valori:

get_cmake_property(_variableNames VARIABLES) 
foreach (_variableName ${_variableNames}) 
    message(STATUS "${_variableName}=${${_variableName}}") 
endforeach() 

per stampare le variabili d'ambiente utilizzano di cmake command mode:

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment") 
+0

Il link sopra i collegamenti per get_property e non get_cmake_property – craffael

+0

@craffael collegamento fisso. Grazie – sakra

+0

Questo è uno snippet molto utile Perché non stampa le variabili ** ENV ** che ho impostato sulla riga di comando? –

134

Un altro modo è quello di usare semplicemente :

cmake -LAH 

Da il manpage:

-L[A][H]

elenco non avanzati variabili memorizzate nella cache.

variabili di cache Lista correranno CMake ed elencare tutte le variabili dalla cache CMake che non sono contrassegnati come interni o ADVANCED. Ciò visualizzerà in modo efficace le impostazioni CMake correnti [...].

Se viene specificato A, verranno visualizzate anche le variabili avanzate.

Se è specificato H, verrà visualizzato anche l'aiuto per ciascuna variabile.

+3

Fare questo sulla directory di costruzione – jtsagata

+3

Si noti che questo metodo NON stampa le variabili di sistema (WIN32, UNIX, APPLE, ecc.). – holocronweaver

+4

Questo non stampa tutte le librerie disponibili, solo quelle in cache. – rafalcieslak

5

ccmake è una buona opzione interattiva per ispezionare in modo interattivo le variabili memorizzate nella cache (option( o set(CACHE:

sudo apt-get install cmake-curses-gui 
mkdir build 
cd build 
cmake .. 
ccmake .. 

+0

Strumento utile :) Tuttavia, le domande chiedono di stampare tutte le variabili .. ma questo mostrerà solo le variabili memorizzate nella cache. – OLL

Problemi correlati