当前位置:  开发笔记 > 编程语言 > 正文

如何使失败的$(shell)命令中断Make

如何解决《如何使失败的$(shell)命令中断Make》经验,为你挑选了1个好方法。

我有一个Makefile,它在应用构建规则之前运行工具开始(这个工具为我写的).如果这个工具是一个python脚本,以非空状态代码退出,我希望GNU Make在那里停止,而不是继续构建程序.

目前,我做这样的事情(顶级,即第1列):

$(info Generating build rules...)
$(shell python collect_sources.py)
include BuildRules.mk

但是如果collect_sources.py退出时状态代码为1,则不会停止make .这也会捕获标准输出collect_sources.py但不打印出来,所以我感觉我看错了方向.

如果可能的话,解决方案甚至应该在简单的MS-DOS shell是标准系统shell时工作.

有什么建议吗?



1> mweerden..:

可能有更好的方法,但我尝试了以下内容并且它有效:

$(if $(shell if your_command; then echo ok; fi), , $(error your_command failed))

在这里,我确实假设your_command不提供任何输出,但解决这种情况应该不难.

编辑:为了使它可以使用默认的Windows shell(可能是任何体面的shell),你可以编写your_command && echo ok而不是ifshell函数内.我不认为这对于(较旧的)DOS shell是可能的.对于这些,您可能希望调整your_command或编写包装器脚本以在错误(或成功)上打印某些内容.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有