【发布时间】:2018-04-12 06:16:30
【问题描述】:
我需要通过cmake 访问bash 关联数组元素。所以假设我的声明和访问在 bash 中类似于以下内容:
~ declare -x someText=124
~ echo $someText
124
~ declare -A mymap=( [foo]=bar [baz]=quux)
~ echo ${mymap[foo]}
bar
CMakeLists.txt 中的访问权限为:
message(STATUS "$ENV{someText})
message(STATUS "$ENV{mymap})
当我运行 cmake 时,我得到以下信息:
-- 124
--
因此,无法通过 $ENV{} cmake 命令访问关联数组。任何想法如何访问它?具体来说,我不关心完整的关联数组,只关心其中的一个元素。
【问题讨论】:
-
bash -c打开一个子shell,第一个命令中定义的数组mymap在第二个echo中将不可用 -
好的,但即使我摆脱 bash -c 并单独运行每个命令,我也会收到相同的消息。
-
@Inian:
bash -c打开一个 chid 进程,它不是子 shell。子外壳是将现有变量(和其他资源)复制到子外壳的位置,无论它们是否被导出。由于父级 (cmake) 不是 bash,因此它无法创建 bash 子 shell。 -
@TassosTzavellas:你会,你不能从另一个进程(shell)导入一个变量值,更不用说另一种语言,没有某种进程间通信。