Makefile 如何通过shell传播退出状态';如果';生成文件中的命令?
如果内部make失败,则外部make将继续,可能是因为“If”命令的隐式退出状态为0。有办法解决这个问题吗?不知何故,我无法重现您的问题,但我认为以下几点应该对您有用:Makefile 如何通过shell传播退出状态';如果';生成文件中的命令?,makefile,Makefile,如果内部make失败,则外部make将继续,可能是因为“If”命令的隐式退出状态为0。有办法解决这个问题吗?不知何故,我无法重现您的问题,但我认为以下几点应该对您有用: %/all: if [ -f $(@D)/src/Makefile ]; then \ $(MAKE) -C $(@D); \ fi 这不可能是一个真实的例子。shell将以执行的最后一个命令的结果退出,如果if语句成功,它将成为make的退出代码,这就是您想要的。很明显,在实际代码中,您必须在
%/all:
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D); \
fi
这不可能是一个真实的例子。shell将以执行的最后一个命令的结果退出,如果if语句成功,它将成为
make
的退出代码,这就是您想要的。很明显,在实际代码中,您必须在make和end之间执行其他命令。您可以在变量中保留结果的副本,并将其用作出口:
%/all:
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D) || (echo "make failure: $$?"; exit 1) \
fi
if [ -f $(@D)/src/Makefile ]; then \
$(MAKE) -C $(@D); \
r=$$?; \
...do other stuff...; \
exit $$r; \
fi