根据CMake文档
https://cmake.org/cmake/help/v3.3/command/set.html
一个人可以做
set(ENV{<variable>} <value>)
但这给出了结果
set(ENV{FOO} foo)
message("variable is $ENV{FOO}")
在配置时
variable is foo
但是在Linux命令中
echo $FOO
该变量未设置。
编辑:
这是问题的部分解决方案,即设置$PATH,以便用户CMAKE_INSTALL_PREFIX首先列出
set(file_sh ${CMAKE_CURRENT_BINARY_DIR}/path.sh)
set(path "${CMAKE_INSTALL_PREFIX}:$ENV{PATH}")
file(WRITE ${file_sh} "#!/usr/bin/env bash\n")
file(APPEND ${file_sh} "export PATH=\"${path}\"")
execute_process(COMMAND chmod a+x ${file_sh} RESULT_VARIABLE res)
这会创建这个文件
#!/usr/bin/env bash
export PATH="/install/prefix/path:/other/path"
稍后可以在 bash 终端上执行
source path.sh
我同时将HOSTNAME和USER定义为环境变量(Linux Ubuntu)
echo $USER
pvicente
echo $HOSTNAME
glace
我使用以下命令在CMakeLists.txt中获取变量
message("-- USER environment variable is set to: " $ENV{USER})
message("-- HOSTNAME environment variable is set to: " $ENV{HOSTNAME})
但检测到USER而不是HOSTNAME
输出是
-- USER environment variable is set to: pvicente
-- HOSTNAME environment variable is set to: