gnu make:如何在for循环make中发生错误时停止和退出

时间:2013-09-22 06:19:17

标签: makefile

我使用'用于'循环来创建子目录,但是当子目录中的make出现一些错误时,它会继续创建下一个目录,我可以在发生错误时停止并且生成' make'在子目录?

all :
    for i in $(SUBDIRS); do make -C $$i dll; done;
                ||
make[1]: *** [bd_snmp.o] error 1
make[1]: Leaving directory `/home/ping/work/svnsocserv/src/bd_snmp'
make[1]: Entering directory `/home/ping/work/svnsocserv/src/bd_snmp_proxy'

1 个答案:

答案 0 :(得分:8)

当然,只需在shell脚本中添加一些内容即可检查:

all:
        for i in $(SUBDIRS); do $(MAKE) -C $$i dll || exit 1; done

(注意总是使用$(MAKE)递归调用子作品,而不是make)。

这不是一个很好的方法,因为虽然它在子make失败时会立即退出,但它不遵循make -k选项继续运行。