2012-02-15 21 views
145

Me pregunto si existe una forma de imprimir todas las variables accesibles en CMAKE. No estoy interesado en las variables CMAKE, como en la opción --help-variables. Estoy hablando de mis variables que definí, o las variables definidas por los scripts incluidos.CMAKE: Imprime todas las variables accesibles en un script

Actualmente estoy incluyendo

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

y tenía la esperanza de que así pude imprimir todas las variables que están aquí, en lugar de tener que ir a través de todos los archivos y leer lo que estaba disponible - I puede encontrar algunas variables que no sabía que pueden ser útiles. Sería bueno ayudar a aprender & descubrimiento. Es estrictamente para la depuración/desarrollo.

similar a la pregunta en Print all local variables accessible to the current scope in Lua pero para cmake!

¿Alguien ha hecho esto?

Respuesta

236

Uso de la función get_cmake_property el siguiente bucle imprimirá todas las variables CRealice definidos y sus valores:

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

para imprimir las variables de entorno de uso de cmake command mode:

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

El enlace de arriba enlaces a GET_PROPERTY y no get_cmake_property – craffael

+0

@craffael enlace fijo. Gracias. – sakra

+0

Es un fragmento muy útil. ¿Por qué no imprime las variables ** ENV ** que configuré en la línea de comando? –

134

Otra forma es simplemente usar :

cmake -LAH 

De la manpage:

-L[A][H]

Lista de las variables almacenadas en caché no avanzados.

Las variables de la memoria caché de lista ejecutarán CMake y listarán todas las variables de la memoria caché CMake que no estén marcadas como INTERNAS o AVANZADAS. Esto mostrará efectivamente la configuración actual de CMake [...].

Si se especifica A, también se mostrarán las variables avanzadas.

Si se especifica H, también mostrará ayuda para cada variable.

+3

Haga esto en su directorio de compilación – jtsagata

+3

Tenga en cuenta que este método NO imprime las variables del sistema (WIN32, UNIX, APPLE, etc.). – holocronweaver

+4

Esto no imprime todas las bibliotecas disponibles, solo las almacenadas en caché. – rafalcieslak

5

ccmake es una buena opción interactiva para inspeccionar las variables de forma interactiva en caché (o option(set(CACHE:

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

+0

Herramienta útil :) Sin embargo, las preguntas piden imprimir todas las variables ... pero esto solo revelará las variables en caché. – OLL

Cuestiones relacionadas