在Makefile中设置环境变量时的@前缀

时间:2011-11-05 19:12:43

标签: makefile environment-variables

这是我到目前为止所得到的:

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

如果我设置一个变量,它只能正常工作。我做错了什么?

1 个答案:

答案 0 :(得分:15)

仅使用'@'一次。它只需要在字符串的最开头,但你有两次。行继续是非常文字的,您当前的代码是:

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

NODE_PATH上的'@'传递给你不想要的shell。