2015-04-17 120 views
14

我在我的bash配置文件中設置了一個環境變量,所以我可以在終端中看到它。 。如何檢查是否在cmake中設置了環境變量

嗒嗒/ $建立回聲$ THING

如何在cmake的消息顯示它並檢查是否設置?我試過以下,但它只是顯示東西爲空白並跳過if語句的正文

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

這個變量在shell中是否導出? 「聲明-p THING」說什麼?運行'cmake'之前運行'export THING'有幫助嗎? –

+0

doh - 是的,它的確如此。 – learnvst

+0

它工作正常,如果硬編碼到已知的env變量=>消息(「THING:」$ ENV {PATH})打印路徑,似乎是字符串的典型問題 – drodri

回答

4

您的CMake代碼是正確的。問題很可能是你只有設置了你的shell中的環境變量但是沒有export它。調用cmake之前運行以下命令:

export THING 
-4

更換

if(DEFINED ENV{THING}) 

if(DEFINED $ENV{THING}) 

你錯過了可變前 '$'。

+2

這不是真的:[if'命令評估它的參數](https://cmake.org/cmake/help/v3.5/command/if.html) – kynan

+1

^這是不正確的 – kikitux

1

我這樣做,但它不起作用。 CMake無法檢測到它。

export THING 

但是這個是工作。

export THING=on 

也許我應該總是給環境變量的默認值。

順便說一下,您可以通過以下CMake代碼檢查環境字符串。

if($ENV{THING} STREQUAL "on") 
    message(STATUS "THING = " $ENV{THING}) 
endif() 
相關問題