相关疑难解决方法(0)

如何修改传递给自定义CMake目标的环境变量?

也许我错过了一些明显的东西,但我似乎无法弄清楚如何显式设置可以通过启动的进程看到的环境变量add_custom_target().

我尝试了以下方法:

set(ENV{PATH} "C:/Some/Path;$ENV{PATH}")
add_custom_target(newtarget somecommand)
Run Code Online (Sandbox Code Playgroud)

不幸的是,%PATH%环境变量似乎没有变化somecommand.(我已经设置了一个Gist,可以在这里重现问题.)

我究竟做错了什么?

cmake environment-variables

26
推荐指数
2
解决办法
2万
查看次数

CMake设置环境变量

根据CMake文档

https://cmake.org/cmake/help/v3.3/command/set.html

一个人可以做

set(ENV{<variable>} <value>)
Run Code Online (Sandbox Code Playgroud)

但这给出了结果

set(ENV{FOO} foo)
message("variable is $ENV{FOO}")
Run Code Online (Sandbox Code Playgroud)

在配置时

variable is foo
Run Code Online (Sandbox Code Playgroud)

但是在Linux命令中

echo $FOO
Run Code Online (Sandbox Code Playgroud)

该变量未设置。

编辑:

这是问题的部分解决方案,即设置$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)
Run Code Online (Sandbox Code Playgroud)

这会创建这个文件

#!/usr/bin/env bash
export PATH="/install/prefix/path:/other/path"
Run Code Online (Sandbox Code Playgroud)

稍后可以在 bash 终端上执行

source path.sh
Run Code Online (Sandbox Code Playgroud)

linux cmake environment-variables

11
推荐指数
1
解决办法
5万
查看次数

标签 统计

cmake ×2

environment-variables ×2

linux ×1