Je me demande s'il existe un moyen d'imprimer toutes les variables accessibles dans CMake. Je ne m'intéresse pas aux variables CMake - comme à l'option --help-variables. Je parle de mes variables que j'ai définies ou des variables définies par les scripts inclus.
Je suis actuellement y compris
INCLUDE (${CMAKE_ROOT}/Modules/CMakeBackwardCompatibilityCXX.cmake)
Et j'espérais pouvoir simplement imprimer toutes les variables qui sont ici, au lieu de devoir parcourir tous les fichiers et lire ce qui était disponible - il se peut que certaines variables que je ne connaissais pas puissent être utiles. Il serait bon d'aider l'apprentissage et la découverte. C'est strictement pour le débogage/développement.
Ceci est similaire à la question dans affiche toutes les variables locales accessibles au périmètre actuel en Lua, mais pour CMake!
Est-ce que quelqu'un a fait ça?
En utilisant la fonction get_cmake_property , la boucle suivante affichera toutes les variables CMake définies et leurs valeurs:
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
Cela peut également être intégré dans une fonction pratique qui peut éventuellement utiliser une expression régulière pour n’imprimer qu’un sous-ensemble de variables avec des noms correspondants.
function(dump_cmake_variables)
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
if (ARGV0)
unset(MATCHED)
string(REGEX MATCH ${ARGV0} MATCHED ${_variableName})
if (NOT MATCHED)
continue()
endif()
endif()
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
endfunction()
Pour imprimer les variables d'environnement, utilisez le mode de commande de CMake :
execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")
Une autre façon consiste simplement à utiliser:
cmake -LAH
De la page de manuel :
-L[A][H]
Répertorie les variables en cache non avancées.
Lister les variables du cache lancera CMake et listera toutes les variables du cache CMake qui ne sont pas marquées comme INTERNAL ou ADVANCED. Cela affichera efficacement les paramètres CMake actuels [...].
Si A est spécifié, les variables avancées seront également affichées.
Si H est spécifié, il affichera également l'aide pour chaque variable.
ccmake
est une bonne option interactive pour inspecter de manière interactive les variables mises en cache (option(
ou set( CACHE
:
Sudo apt-get install cmake-curses-gui
mkdir build
cd build
cmake ..
ccmake ..