如果之前有人问我,我很抱歉,我今天刚刚开始搞乱Makefiles。
所以我试图在运行一组测试之前/之后使用Makefile导入和删除测试数据库。目前这两个步骤都在运行,但是只有在运行测试时没有问题时才会运行测试后步骤。
REPORTER = nyan
.PHONY: test
pre-test:
echo "PRE STUFF"
test: pre-test
@NODE_ENV=test ./node_modules/.bin/mocha \
./test \
--recursive \
--reporter $(REPORTER)
post-build: test
echo "AFTER STUFF"
我如何理解它的语法是这样的:
<task> : <task prereq's>
我想问题是其中一个步骤出现了&#34;失败&#34;到make
,所以它不会继续吗?
答案 0 :(得分:4)
你的句子然而,只有在运行测试没有问题时才会运行后测试并不真正解析。如果您清楚地说明您想要的行为是什么,并清楚地描述您获得的行为,那将会很有帮助。
另外,我假设上面的makefile你正在运行make post-build
,否则只会运行pre-test
...?
你是对的,如果目标的先决条件失败,那么目标本身将不会被make运行。
对于上面的示例,我建议您将前后步骤放入相同的配方中。如果它们很复杂并且您想在多个规则中使用它们,则可以将命令放入变量中:
PRE-TEST = echo "PRE STUFF"
POST-TEST = echo "AFTER STUFF"
test:
$(PRE-TEST)
@NODE_ENV=test ./node_modules/.bin/mocha \
./test \
--recursive \
--reporter $(REPORTER); \
result=$$?; \
$(POST-TEST); \
exit $$result