CMake使用自定义文件的默认值展开env变量



使用CMake,我试图在自定义文件中扩展系统环境变量值。我执行以下命令:

configure_file(config.cnf.in config.cnf)

config.cnf.in内容:

[options]
some_value1 = $ENV{SYSTEM_ENV_VAR}

问题是:如果没有定义SYSTEM_ENV_VAR变量,是否可以设置默认值

我试着这样做:

some_value1 = $ENV{SYSTEM_ENV_VAR:-defaultValue}

得到一个cmake错误:变量名中的无效字符(":"(:"SYSTEM_ENV_VAR">

我没有在文档中找到答案:https://cmake.org/cmake/help/v3.2/command/configure_file.html

您不能为变量设置默认值,但您可以将环境变量存储在普通cmake变量中,如果未设置,则定义默认值。我测试了这个:

set(EXIST $ENV{HOME})
set(NOT_EXIST $ENV{NOT_EXIST})
if(EXIST)
message("Variable EXIST exist")
else()
message("Variable EXIST DOES NOT exist, setting default value")
set(EXIST "Default value")
endif()
if(NOT_EXIST)
message("Variable NOT_EXIST exist")
else()
message("Variable NOT_EXIST DOES NOT exist, setting default value")
set(NOT_EXIST "Default value")
endif()
message ("EXIST: ${EXIST}")
message ("NOT_EXIST: ${NOT_EXIST}")

我的输出是

Variable EXIST exist
Variable NOT_EXIST DOES NOT exist, setting default value
EXIST: /home/user
NOT_EXIST: Default value

最新更新