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

前端之家收集整理的这篇文章主要介绍了如何使失败的$(shell)命令中断Make前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Makefile,它是在应用构建规则(这个工具为我写的)之前运行一个工具开始的。如果这个工具,这是一个python脚本,退出一个非空状态代码,我希望GNU Make停止在那里,而不是继续构建程序。

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

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

但是如果collect_sources.py的状态代码为1,那么这并不会停止。这也捕获了collect_sources.py的标准输出,但是没有打印出来,所以我感觉到我在错误的方向。

如果在所有可能的情况下,解决方案甚至可以在简单的MS-DOS shell是标准系统shell时工作。

任何建议?

可能会有一个更好的方法,但我尝试了以下,它的作品:
$(if $(shell if your_command; then echo ok; fi),$(error your_command Failed))

在这里我确实假设your_command没有给出任何输出,但是不应该很难解决这种情况。

编辑:为了使其与默认的Windows外壳(可能是任何体面的外壳)一起使用,您可以编写your_command&& echo ok而不是在shell函数内。我不认为这是可能的(旧的)DOS shell。对于这些,您可能希望调整your_command或编写一个包装器脚本来打印错误(或成功)。

原文链接:https://www.f2er.com/bash/387725.html

猜你在找的Bash相关文章