1

在 shell 脚本中,我可以

. conf/environment

我可以在 Makefile 中做同样的事情吗?

4

2 回答 2

3

Make 有两个includeand -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命令将输出作为命令执行。

于 2013-05-20T19:32:28.820 回答
0

看起来没有好的解决方案,所以这是我能想到的最干净的 hack:

  • 有三层构建脚本
  • 第 1 层是 Makefile
  • 第 2 层由一堆 shell 脚本组成,每个 make 目标一个

在第 2 层的每个 shell 脚本中,执行

. conf/environment

然后在第 3 层运行实际的构建脚本

于 2013-05-20T21:58:21.463 回答