如何在Makefile中设置环境variables

我想改变这个Makefile:

SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor \ --harmony \ --watch etc,lib \ --extensions js,json \ --no-restart-on error \ lib test: NODE_ENV=test mocha \ --harmony \ --reporter spec \ test clean: @rm -rf node_modules .PHONY: test clean 

至:

 SHELL := /bin/bash PATH := node_modules/.bin:$(PATH) boot: @supervisor \ --harmony \ --watch etc,lib \ --extensions js,json \ --no-restart-on error \ lib test: NODE_ENV=test test: mocha \ --harmony \ --reporter spec \ test clean: @rm -rf node_modules .PHONY: test clean 

不幸的是,第二个不起作用(节点进程仍然使用默认的NODE_ENV运行。

我错过了什么?

使variables不会被导出到进程调用的环境中…默认情况下。 但是,您可以使用make的导出来强制他们这样做。 更改:

 test: NODE_ENV = test 

对此:

 test: export NODE_ENV = test 

(假设你有足够现代版本的GNU make)。

我只需要本地环境variables来调用我的testing命令,下面是一个在bash shell中设置多个环境variables的例子,并且转义make的美元符号。

 SHELL := /bin/bash .PHONY: test tests test tests: PATH=./node_modules/.bin/:$$PATH \ JSCOVERAGE=1 \ nodeunit tests/