在foreach循环中调用导出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在foreach循环中调用导出相关的知识,希望对你有一定的参考价值。
我想通过export
将变量传递给子makefile
主Makefile包含将被编译的组件COMPONENT_LIST
列表。在目标all
的规则中,我使用USE_COMP_1
函数导出USE_COMP_2
,USE_COMP_3
and和foreach
变量:
COMPONENT_LIST:=
COMP_1
COMP_2
COMP_3
all:
$(foreach comp,$(COMPONENT_LIST),export USE_$(comp)=y;)
@for comp in $(COMPONENT_LIST) ; do
make -C $$comp all;
if [ ! $$? -eq 0 ]; then
echo "component "$$comp" not found. Please make sure that folder "$$comp" exist";
exit 1;
fi
done
但是在子Makefile中USE_COMP_1
的值,USE_COMP_2
and和USE_COMP_3
是空的。
这有什么解释吗?
答案
我找到了解决方案。
每个子命令都在自己的shell中运行
所以我错过了
all:
$(foreach comp,$(COMPONENT_LIST),export USE_$(comp)=y;)
for comp in $(COMPONENT_LIST) ; do
make -C $$comp all;
if [ ! $$? -eq 0 ]; then
echo "component "$$comp" not found. Please make sure that folder "$$comp" exist";
exit 1;
fi
done
在这种情况下,export
和以下for循环在同一个shell中运行
以上是关于在foreach循环中调用导出的主要内容,如果未能解决你的问题,请参考以下文章
如何将许多变量和函数从全局环境导出到 foreach 循环?
在 Knockout foreach 循环中编写 HTML 代码(通过 Razor 调用)