加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

for-loop – Makefile:for循环和中断错误

发布时间:2020-12-16 10:24:11 所属栏目:百科 来源:网络整理
导读:我有一个带有for循环的Makefile.问题是当循环内发生错误时,执行继续进行. SUBDIRS += $(shell ls -d */ | grep amore)# breaks because can't write in /,stop execution,return 2test: mkdir / touch /tmp/zxcv# error because can't write in / but carry
我有一个带有for循环的Makefile.问题是当循环内发生错误时,执行继续进行.

SUBDIRS += $(shell ls -d */ | grep amore)

# breaks because can't write in /,stop execution,return 2
test:
    mkdir / 
    touch /tmp/zxcv

# error because can't write in / but carry on,finally return 0
tests:
    @for dir in $(SUBDIRS); do 
            mkdir / ;   
            touch /tmp/zxcv ;  
    done;

如何在遇到错误时让循环停止?

解决方法

@Micheal提供了shell解决方案.你应该真的使用make(然后它将使用-jn).

.PHONY: tests
tests: ${SUBDIRS}
    echo $@ Success

${SUBDIRS}:
    mkdir /
    touch /tmp/zxcv

编辑

清洁目标的可能解决方案:

clean-subdirs := $(addprefix clean-,${SUBDIRS})

.PHONY: ${clean-subdirs}
${clean-subdirs}: clean-%:
    echo Subdir is $*
    do some stuff with $*

这里我使用静态模式规则(good stuff?),因此在配方中$*是模式中匹配的百分比(在这种情况下为subdir).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读