每次执行make先决条件

时间:2014-12-02 21:20:29

标签: makefile

我的makefile:

.PHONY: test-unit test-functional mocha

test: test-unit test-functional

test-unit: SUITE = "unit"
test-unit: mocha
    @echo "unit"

test-functional: SUITE = "functional"
test-functional: mocha
    @echo "functional"

mocha:  
    @echo ===== RUNNING TESTS: $(SUITE) =====

我希望使用这个makefile来运行我的两个测试套件,而无需复制运行套件所需的代码(抽象到mocha任务中)。但是,Make很聪明,并且意识到mocha已经运行test-functional并且没有再次运行它。

make test

===== RUNNING TESTS: unit =====
unit
functional

有没有更好的方法来实现这个或许是为了实现类似的抽象,或者每次都需要运行标记mocha

1 个答案:

答案 0 :(得分:2)

使用Canned Recipe作为mocha任务的正文,并将其粘贴在两个测试任务中。

而不是

mocha:
    @echo ===== RUNNING TESTS: $(SUITE) =====

test: mocha

使用

define mocha
@echo ===== RUNNING TESTS: $(SUITE) =====
endef

test:
    $(mocha)
    ....

define mocha =(或:=等)我认为make 4.0+。