2017-09-17 2 views
0

Selon la documentation CMakeCmake défini la variable

https://cmake.org/cmake/help/v3.3/command/set.html

on peut faire

set(ENV{<variable>} <value>) 

mais cela donne le résultat

set(ENV{FOO} foo) 
message("variable is $ENV{FOO}") 

au moment de la configuration

variable is foo 

mais à une commande linux

echo $FOO 

la variable est pas

EDIT

est ici une solution partielle au problème, qui était de mettre $ PATH, de sorte qu'un utilisateur a CMAKE_INSTALL_PREFIX apparaît en premier

set(file_sh ${CMAKE_CURRENT_BINARY_DIR}/path.sh) 
set(path "${CMAKE_INSTALL_PREFIX}:$ENV{PATH}") 
file(WRITE ${file_sh} "#!/usr/bin/env bash\n") 
file(APPEND ${file_sh} "export PATH=\"${path}\"") 
execute_process(COMMAND chmod a+x ${file_sh} RESULT_VARIABLE res) 

cela crée ce fichier

#!/usr/bin/env bash 
export PATH="/install/prefix/path:/other/path" 

plus tard peut être exécuté sur un terminal bash avec

source path.sh 
+1

Où appelez-vous 'echo $ FOO'? – arrowd

+2

Copie possible de [Comment modifier les variables d'environnement passées à la cible CMake personnalisée?] (Https://stackoverflow.com/questions/35029277/how-to-modify-environment-variables-passed-to-custom-cmake-target) – Florian

+0

@arrowd 'echo $ FOO' est sous linux bash –

Répondre

0

Le dernier paragraphe de la documentation que vous avez cité donne la réponse:

Set the current process environment <variable> to the given value.

Il influe sur le processus en cours environnement créé lorsque CMake est démarré à partir du shell. Ce n'est pas l'environnement de la coquille elle-même.

+0

ok, mais le titre du paragraphe indique ** Set Environment Variable ** La documentation de Cmake n'est pas la meilleure que j'ai trouvée –

+0

Je comprends vos plaintes au sujet de la documentation, mais comment l'environnement est fourni au processus est spécifique au système d'exploitation et similaire sous Unix/Linux et Windows. Chaque processus (par exemple votre bash) qui crée un processus enfant (votre cmake) fournit au nouveau processus une copie de son environnement. Vous ne pouvez pas modifier l'environnement du processus parent ultérieurement. Mais vous pouvez démarrer un processus intermédiaire qui définit les variables d'environnement et démarre ensuite cmake. – vre