Je sais comment récupérer une variable d'environnement normale à l'échelle de la machine dans CMAKE en utilisant
$ENV{EnvironmentVariableName}
mais je ne peux pas récupérer une variable d'environnement spécifique à l'utilisateur. Est-ce possible et comment?
windows
environment-variables
cmake
Lars Bilke
la source
la source
Réponses:
Obtenir des variables dans votre script CMake
Vous pouvez passer une variable sur la ligne avec l'invocation cmake:
ou en exportant une variable en BASH:
Ensuite, vous pouvez le récupérer dans un script cmake en utilisant:
la source
Vous pouvez également invoquer cmake lui-même pour le faire de manière multiplateforme:
Juste être conscient que cela ne peut fonctionner que la première fois. Si CMake se reconfigure avec l'une des versions consécutives (vous appelez simplement
make
, par exemple , une aCMakeLists.txt
été modifiée et CMake exécute à nouveau le processus de génération), la variable d'environnement définie par l'utilisateur peut ne plus être là (par rapport aux variables d'environnement à l'échelle du système).Je transfère donc ces variables d'environnement définies par l'utilisateur dans mes projets dans une variable mise en cache CMake:
Référence
la source
Vous devez exporter vos variables. Donc par exemple sous Linux:
Les variables non exportées sont vides dans CMAKE.
la source
IF($ENV{COVERAGE}) ... END()
, invocation:COVERAGE=1 cmake ..
. Certes, je ne vérifie pas le contenu et je ne sais pas si ce serait le cas. Mais cela fonctionne certainement pour tester s'il est défini ou non!Les variables d'environnement (que vous modifiez à l'aide des propriétés système) ne sont propagées aux sous-shell que lorsque vous créez un nouveau sous-shell.
Si vous aviez une invite de ligne de commande (DOS ou cygwin) ouverte lorsque vous avez modifié les variables d'environnement utilisateur, elles n'apparaîtront pas.
Vous devez ouvrir une nouvelle invite de ligne de commande après avoir modifié les paramètres utilisateur.
L'équivalent sous Unix / Linux est d'ajouter une ligne à votre .bash_rc: vous devez démarrer un nouveau shell pour obtenir les valeurs.
la source
SET var_name=var_value
pour définir la variable d'environnement dans la session DOS en cours, ouSETX var_name var_value
pour la définir de manière permanente: voir set et setx . set local peut également être intéressant.source ~/.bashrc
pour réexécuter le.bashrc
fichier modifié et obtenir les nouvelles valeurs dans votre session actuelle.