2015-04-17 5 views
14

Ho impostato una variabile di ambiente nel mio profilo bash, quindi posso vederlo nel terminale bene. .Come faccio a verificare se una variabile di ambiente è impostata in cmake

bla/costruisce $ echo $ COSA

thingy

Come faccio a visualizzare in un messaggio CMake e verificare se è impostato? Ho provato quanto segue, ma mostra solo cosa vuoto e salta il corpo dell'istruzione if

message("THING:" $ENV{THING}) 
if(DEFINED ENV{THING}) 
    message(STATUS "THING environment variable defined") 
    # some more commands 
endif() 
+1

La variabile è 'export'ed nella shell? Cosa dice 'declare -p THING'? Esegue 'export THING' prima di eseguire l'aiuto' cmake'? –

+0

doh - sì, lo fa. – learnvst

+0

Funziona bene se hardcoding a noto env variable => message ("COSA:" $ ENV {PATH}) stampa il percorso, sembra il tipico problema con le stringhe – drodri

risposta

4

Il codice di CMake è corretto. Molto probabilmente il problema è che tu solo imposta la variabile di ambiente nella tua shell ma non hai esportazione it. Eseguire il seguente prima di richiamare cmake:

export THING 
-4

Sostituire

if(DEFINED ENV{THING}) 

con

if(DEFINED $ENV{THING}) 

Ti sei perso un '$' prima della variabile.

+2

Questo non è vero: [il comando 'if' valuta i suoi argomenti] (https://cmake.org/cmake/help/v3.5/command/if.html) – kynan

+1

^questo non è corretto – kikitux

1

Ho fatto questo ma non funziona. CMake non può rilevarlo.

export THING 

Ma questo è lavoro.

export THING=on 

Forse dovrei sempre dare un valore predefinito per la variabile di ambiente.

A proposito, è possibile controllare la stringa di ambiente seguendo il codice CMake.

if($ENV{THING} STREQUAL "on") 
    message(STATUS "THING = " $ENV{THING}) 
endif()