鉴于make规则应该从夹在中间的命令中返回失败代码,如何保存然后返回该失败代码?
具体而言,给定make
目标,如
mytarget:
do some necessary beginning for all targets that must occur for every run of this Makefile
-$(MAKE) $(MAKECMDGOALS)
do some necessary ending for all targets that must occur for every run of this Makefile
# more targets follow
如何使用make
命令的返回码退出-$(MAKE) $(MAKECMDGOALS)
?
也就是说,如何
mytarget:
do some necessary beginning for all targets that must occur for every run of this Makefile
-$(MAKE) $(MAKECMDGOALS)
return_code=$? # psuedo-code
do some necessary ending for all targets that must occur for every run of this Makefile
exit $(return_code)
这需要在没有--ignore-errors
选项的情况下进行。
@EugeniuRosca提供了一个非常合理的答案," 你的return_code = $?必须使用先前的shell命令"。
在SAME子shell中执行该行但是,我希望得到一个使用原生制作能力的答案。
答案 0 :(得分:1)
您的return_code=$?
行必须使用之前的shell命令-$(MAKE) $(MAKECMDGOALS)
在 SAME 子shell中执行,如下所示:
mytarget:
# intro actions
-make whatever; \
return_code=$$?; \
# end actions; \
exit $$return_code
如果在不使用#end ections
的情况下在配方的单独行上执行\
,则子shell终止时,$?
值将丢失。