2015-04-17 86 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() 
相关问题