将环境设置导入Makefile(ubuntu和osx)

时间:2013-05-20 19:21:06

标签: linux macos ubuntu makefile

在shell脚本中我可以

. conf/environment

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

2 个答案:

答案 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)

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

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

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

. conf/environment

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