Question

Je sais comment récupérer une variable d'environnement large normal de la machine à l'aide CMAKE

$ENV{EnvironmentVariableName}

mais je ne peux pas récupérer une variable d'environnement utilisateur spécifique. Est-il possible et comment?

Était-ce utile?

La solution

Obtenir des variables dans votre script CMake

Vous pouvez passer une variable sur la ligne avec l'invocation de CMake:

FOO=1 cmake

ou en exportant une variable en bash:

export FOO=1

Ensuite, vous pouvez le ramasser dans un script utilisant CMake:

$ENV{FOO}

Autres conseils

Vous pouvez également appeler lui-même pour faire ceci d'une manière multi-plateforme:

cmake -E env EnvironmentVariableName="Hello World" cmake ..
  

env [--unset=NAME]... [NAME=VALUE]... COMMAND [ARG]...

     

Exécuter la commande dans un environnement modifié.


Il suffit de être conscient que cela ne peut fonctionner que la première fois. Si CMake re-configure avec l'un des consécutive builds (vous appelez simplement par exemple make, un CMakeLists.txt a été changé et CMake passe par le processus de génération à nouveau), la variable d'environnement définie par l'utilisateur ne peut pas être plus là (par rapport à l'ensemble du système des variables d'environnement ).

transférer les variables d'environnement définies par l'utilisateur dans mes projets dans une variable mises en cache CMake:

cmake_minimum_required(VERSION 2.6)

project(PrintEnv NONE)

if (NOT "$ENV{EnvironmentVariableName}" STREQUAL "")
    set(EnvironmentVariableName "$ENV{EnvironmentVariableName}" CACHE INTERNAL "Copied from environment variable")
endif()

message("EnvironmentVariableName = ${EnvironmentVariableName}")

Référence

Vous devez avoir vos variables exportées. Ainsi, par exemple sous Linux:

export EnvironmentVariableName=foo

les variables non exportées sont vides dans CMAKE.

Variables d'environnement (que vous modifiez en utilisant les propriétés du système) ne sont propagées à sous-couches lorsque vous créez un nouveau sous-shell.

Si vous aviez une invite de ligne de commande (DOS ou Cygwin) ouvert lorsque vous avez changé les vars env utilisateur, ils ne seront pas visibles.

Vous devez ouvrir une nouvelle invite de ligne de commande après avoir modifié les paramètres utilisateur.

L'équivalent sous Unix / Linux ajoute une ligne à votre .bash_rc. Vous devez lancer un nouveau shell pour obtenir les valeurs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top