gpt4 book ai didi

bash - 如何检查是否在cmake中设置了环境变量

转载 作者:行者123 更新时间:2023-11-29 08:42:55 28 4
gpt4 key购买 nike

我在我的 bash 配置文件中设置了一个环境变量,这样我就可以在终端中看到它了。 .

blah/builds$ echo $THING

thingy

如何在 cmake 消息中显示它并检查它是否已设置?我尝试了以下方法,但它只是将内容显示为空白并跳过 if 语句的主体

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

最佳答案

非常了解 export 的作用以及环境的一般工作方式,我仍然对这种形式的 WTF 满口苦恼:

IF(DEFINED $ENV{THING})

但在这种形式下效果很好:

IF(DEFINED ENV{THING})

注意 $ 遗漏。


注意您可以使用 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]--

它行为如此怪异的原因,和往常一样是遗留问题。 IF 曾经在旧的 CMake 中做疯狂的事情;他们用 CMP0054 在 CMake 3.1 中以向后兼容的方式修复了这个问题,您必须明确启用:

CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
PROJECT(...)

CMAKE_POLICY(SET CMP0054 NEW) #-- fixes IF() with quoted args
CMAKE_POLICY(SET CMP0057 NEW) #-- enables IF(.. IN_LIST ..)

关于bash - 如何检查是否在cmake中设置了环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688115/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com