小编典典

如何确保将 Makefile 变量设置为先决条件?

all

Makefiledeploy配方需要设置一个环境变量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

阅读 59

收藏
2022-08-17

共1个答案

小编典典

ENV如果未定义并且需要它(无论如何在 GNUMake 中),这将导致致命错误。

.PHONY:部署检查环境

部署:检查环境
    ...

其他需要环境的东西:检查环境
    ...

检查环境:
ifndef ENV
    $(错误 ENV 未定义)
万一

(注意 ifndef 和 endif 没有缩进 -它们控制 make
“看到”
的内容,在
Makefile 运行之前生效。 “$(error” 用制表符缩进,因此它只在规则的上下文中运行。)

2022-08-17