【发布时间】:2017-05-23 11:32:40
【问题描述】:
我正在尝试从 Perl 脚本设置 env 变量并在 Makefile 中使用它不起作用。转储 ENV 哈希树显示变量已成功设置。
生成文件代码
list_gen: $(TESTBENCH_PATH)/blocks/soc_tb/global/default
perl list_gen.pl; \
$(MAKE) $(RECITAL_PATH)/catalog/catalog.xml
@ touch $@
# Generates catalog.xml from .xmls of VIPs
$(RECITAL_PATH)/catalog/catalog.xml: $(VIP_XMLs)
@echo "# generating catalog.xml " ; \
echo "vip list is $(VIP_LIST)" ; \
rpfCatalog --add $(VIP_XMLs); \
for vip in $(VIP_LIST); \
do \
rpfCatalog --add $$TESTBENCH_PATH/common_blocks/$$vip/global/default.xml; \
done
Perl 脚本代码
$ENV{"VIP_LIST"} = $vip_exists;
【问题讨论】:
-
perl脚本是如何调用make的?
-
您是否尝试使用 perl 脚本设置环境变量并稍后使用? perl 脚本在子 shell 中运行;它不会将其价值带入父外壳。
-
perl 脚本没有调用 make。在执行 perl 脚本后.. make 被递归调用,以便 env.变量更新可见
-
Perl 中 %ENV 的更改不会传播到父进程。不过,您可以
print将该值捕获到 make 变量中。 -
@choroba : 好的 .. 那么如何变量值可用于 makefile 呢?