J'ai défini une variable d'environnement dans mon profil bash afin que je puisse bien la voir dans le terminal .
bla/construit $ echo $ THING
truc
Comment puis-je l'afficher dans un message cmake et vérifier s'il est défini? J'ai essayé ce qui suit, mais il affiche simplement chose comme vide et saute le corps de l'instruction if
message("THING:" $ENV{THING})
if(DEFINED ENV{THING})
message(STATUS "THING environment variable defined")
# some more commands
endif()
Votre code est correct. Le problème est probablement que vous n'avez que défini la variable d'environnement dans votre shell mais que vous n'avez pas exporté. Exécutez ce qui suit avant d'appeler cmake
:
export THING
J'ai fait ça mais ça ne marche pas. CMake ne peut pas le détecter.
export THING
Mais celui-ci est un travail.
export THING=on
Peut-être que je devrais toujours donner la valeur par défaut pour la variable d'environnement.
En passant, vous pouvez vérifier la chaîne d’environnement en suivant le code CMake.
if( $ENV{THING} STREQUAL "on")
message(STATUS "THING = " $ENV{THING})
endif()
Sachant parfaitement ce que fait export
et comment l’environnement fonctionne en général, j’ai encore beaucoup
IF(DEFINED $ENV{THING})
mais cela a bien fonctionné sous cette forme:
IF(DEFINED ENV{THING})
Notez l'omission $
.
N.B. vous pouvez rapidement tester ceci en utilisant cmake -P
:
[~] cat > test-env.cmake << 'EOF'
IF(DEFINED ENV{FOOBAR})
MESSAGE(STATUS "FOOBAR env seen: --[$ENV{FOOBAR}]--")
ELSE()
MESSAGE(STATUS "WTF")
ENDIF()
EOF
[~]
[~] FOOBAR=test cmake -P test-env.cmake
-- FOOBAR env seen: --[test]--