在Makefile中设置环境变量

Makefile用来调用各种命令做自动化构建工具非常方便。最近在写给Flask项目写Makefile时,需要设置环境变量,却遇到一些小问题。

如果是在全局设置环境变量时很容易:

export FLASK_ENV=dev
export FLASK_DEBUG=1

dev:
    @echo $(FLASK_ENV)
    @echo $(FLASK_DEBUG)

运行make dev时则返回:

$ make dev
dev
1

但是如果需要在不同target下设置不同环境变量的话,这样就会有问题了。具体应该这样设置:


dev:export FLASK_ENV=dev
dev:export FLASK_DEBUG=1
dev:
    @echo $(FLASK_ENV)
    @echo $(FLASK_DEBUG)

prod:export FLASK_ENV=prod
prod:export FLASK_DEBUG=0
prod:
    @echo $(FLASK_ENV)
    @echo $(FLASK_DEBUG)

这样再执行make devmake prod时,不同的target下的环境变量就不会干扰了:

$ make dev
dev
1
$ make prod
prod
0

Enjoy it!