我想做以下事情:
start:
@echo start the server
stop:
@echo stop the server
test1: start stop
@echo do test1
test2: start stop
@echo do test2
test-all: test1 test2
但我有两个问题:
pre-
和post-rules
? makefile中的所有规则似乎都是pre-
。在这种情况下,我希望在每次测试结束时运行stop
。start
和stop
规则,即使它已经运行过了?需要为单个测试的每个执行启动/停止周期,这样当我运行make test-all
时,会为每个<{1}}调用start
和stop
测试,而不仅仅是第一次需要它们的测试一次。答案 0 :(得分:1)
test1:
@echo start the server
@echo do test1
@echo stop the server
test2:
@echo start the server
@echo do test2
@echo stop the server
test-all: test1 test2
如果冗余太多(例如,如果你有很多单元测试),你可以定义一个"canned" recipe:
define start-stop
@echo start the server
$(1)
@echo stop the server
endef
test1:
$(call start-stop, @echo do test 1)
test2:
$(call start-stop, @echo do test 2)