makefile 循环编译子模块,出错时自动退出

     编译一个大的工程时,往往都是透过for循环重重迭代编译各个子模块。如果某些子模块编译出错,没有退出就
会导致最后生成的库没有对应的功能或者符号。此时,我们需要再出现出错时,makefile编译主动退出。

先看网上的一个截图,阐述了一个解决方法:

说明:SUB_BOOKS 是需要循环编译的子模块,通过可以这样获得,SUB_BOOKS = $(shell find  path/  -type d )
          或者直接赋值也行。先循环在子目录先查找是否存在makefile,存在的情况下编译,要点是在编译子模块
          时,添加的 || exit "$$?"  可以识别到当前模块编译是否出错,是则停止编译。


根据以上分析,我们可以采用如下方式测试:

target:
     @for dir in $(subdir); do \
          echo ------------------------compiling $$dir------------------------; \
          $(MAKE) -C $$subdir  || exit "$$?";  \
     done

在子模块的某个文件弄一段错误代码,测试会发现去掉 exit "$$?"可以跳过错误继续编译,而加上后就会退出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值