小编Ped*_*nte的帖子

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获取HOSTNAME环境变量

我同时将HOSTNAME和USER定义为环境变量(Linux Ubuntu)

echo $USER
pvicente
echo $HOSTNAME
glace
Run Code Online (Sandbox Code Playgroud)

我使用以下命令在CMakeLists.txt中获取变量

message("-- USER environment variable is set to: " $ENV{USER})
message("-- HOSTNAME environment variable is set to: " $ENV{HOSTNAME})
Run Code Online (Sandbox Code Playgroud)

但检测到USER而不是HOSTNAME

输出是

-- USER environment variable is set to: pvicente
-- HOSTNAME environment variable is set to:
Run Code Online (Sandbox Code Playgroud)

linux bash ubuntu cmake environment-variables

2
推荐指数
1
解决办法
1427
查看次数

标签 统计

cmake ×2

environment-variables ×2

linux ×2

bash ×1

ubuntu ×1