%/all:
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D); \
fi
如果内部制作失败,则外部制作继续,大概是因为'如果'隐含的退出状态。命令是0.有没有办法解决这个问题?
答案 0 :(得分:1)
不知怎的,我无法重现你的问题,但我认为以下内容适合你:
%/all:
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D) || (echo "make failure: $$?"; exit 1) \
fi
答案 1 :(得分:1)
这不是一个真实的例子。 shell将以执行的最后一个命令的结果退出,如果if语句成功将是make
的退出代码,这就是你想要的。显然,在你的真实代码中,你必须在make和end之间做一些其他的命令。您可以将结果的副本保存在变量中,并将其用作出口:
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D); \
r=$$?; \
...do other stuff...; \
exit $$r; \
fi