Makefiledeploy配方需要设置一个环境变量ENV以正确执行自身,而其他配方不关心,例如,
deploy
ENV
ENV = .PHONY: deploy hello deploy: rsync . $(ENV).example.com:/var/www/myapp/ hello: echo "I don't care about ENV, just saying hello!"
如何确保ENV已设置此变量?有没有办法将此 makefile 变量声明为部署配方的先决条件?例如,
deploy: make-sure-ENV-variable-is-set
ENV如果未定义并且需要它(无论如何在 GNUMake 中),这将导致致命错误。
.PHONY:部署检查环境 部署:检查环境 ... 其他需要环境的东西:检查环境 ... 检查环境: ifndef ENV $(错误 ENV 未定义) 万一
(注意 ifndef 和 endif 没有缩进 -它们控制 make “看到”的内容,在 Makefile 运行之前生效。 “$(error” 用制表符缩进,因此它只在规则的上下文中运行。)