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

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

发布时间:2020-12-15 19:14:06 所属栏目:安全 来源:网络整理
导读:我有一个Makefile,它是在应用构建规则(这个工具为我写的)之前运行一个工具开始的。如果这个工具,这是一个python脚本,退出一个非空状态代码,我希望GNU Make停止在那里,而不是继续构建程序。 目前,我做这样的事情(顶级,即第1列): $(info Generating bu
我有一个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或编写一个包装器脚本来打印错误(或成功)。

(编辑:李大同)

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

    推荐文章
      热点阅读