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 dev
和make prod
时,不同的target下的环境变量就不会干扰了:
$ make dev
dev
1
$ make prod
prod
0