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

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

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

运行 make dev 时则返回:

$ make dev

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

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

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

$ make dev
$ make prod