2011-11-05 139 views
9

这里是我到目前为止有:的Makefile:设置环境变量

SPECS = $(shell find spec -iname "*_spec.js") 

spec: 
    @NODE_ENV=test \ 
    @NODE_PATH=lib \ 
    ./node_modules/.bin/expresso \ 
    $(TESTFLAGS) \ 
    $(SPECS) 

cov: 
    @TESTFLAGS=--cov $(MAKE) spec 

.PHONY: spec cov 

输出:/bin/sh: @NODE_PATH=lib: command not found

如果我设置一个变量只有它的正常工作。我究竟做错了什么?

回答

10

仅使用'@'一次。它只在字符串的一开始就需要,但你有两次。该生产线的延续是非常字面,而当前的代码如下:

 
@NODE_ENV=test @NODE_PATH=lib ./node_modules/.bin/expresso $(TESTFLAGS) $(SPECS) 

的“@”上NODE_PATH是越来越传递到外壳,你不想要的。

+0

这很快。谢谢! – 7elephant