在shell脚本中我可以
. conf/environment
我可以在Makefile中做同样的事吗?
答案 0 :(得分:2)
Make同时包含include
和-include
(以及为了与其他make工具兼容而保留的sinclude
)语句(以后代表“可选”包含)。所以你可以这样做:
PLATFORM := $(shell uname)
include conf/environment_$(PLATFORM).mk
每个environment_*.mk
定义相同的变量,但具有不同的值,具体取决于他们所定位的平台。
有关详细信息,请参阅GNU Make文档的§3.3 “Including Other Makefiles”。
<强>更新强>
如果您尝试通过运行shell脚本实际导入环境变量,则有两个选项。第一种是在运行make之前运行脚本。然后,您可以在Makefile中访问这些变量。所以你会做source conf/environment && make
。第二个选项是修改脚本,而不是执行export
,执行echo
,然后使用Make的eval
命令将该输出作为命令执行。
答案 1 :(得分:0)
看起来没有好的解决方案,所以这是我能想到的最干净的黑客:
在第2层的每个shell脚本中,执行
. conf/environment
然后在第3层运行实际的构建脚本