即使目标规则失败,如何确保make在Makefile退出时执行操作?我希望有类似Perl的END功能。
我的Makefile需要这样做
所以我的Makefile看起来像这样:
TICKET=$(shell get-ticket)
all: somerule anotherrule lastrule
somerule:
compile foo
sign foo --ticket $(TICKET)
anotherrule: more deps etc
compile bar
lastrule:
release --ticket $(TICKET)
但是拉斯特勒不会这样做。问题是我无法使用最终目标规则来释放故障单,因为如果出现错误,则不会生成规则。
答案 0 :(得分:1)
你必须使用递归。像这样:
ifndef TICKET
.DEFAULT:
@ ticket=`get-ticket` || exit 1; \
$(MAKE) $@ TICKET="$$ticket"; ret=$$?; \
release --ticket "$$ticket"; \
exit $$ret
else
all: somerule anotherrule
...etc...
endif