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