gpt4 book ai didi

android - 在 AOSP Android.mk 文件中,如何执行命令并在命令失败时使构建失败?

转载 作者:搜寻专家 更新时间:2023-11-01 07:49:00 24 4
gpt4 key购买 nike

在 Android.mk 文件中,我有以下行执行 bash 脚本:

$(info $(shell ($(LOCAL_PATH)/build.sh)))

但是,如果命令失败,构建将继续而不是退出。

在这种情况下如何使整个构建失败?

最佳答案

转储stdout,测试退出状态,失败时输出错误:

ifneq (0,$(shell >/dev/null command doesnotexist ; echo $$?))
$(error "not good")
endif

这是失败的样子:

[user@host]$ make 
/bin/sh: doesnotexist: command not found
Makefile:6: *** not good. Stop.
[user@host]$

如果你想查看stdout,那么你可以将它保存到一个变量中并只测试lastword:

FOOBAR_OUTPUT := $(shell echo "I hope this works" ; command foobar ; echo $$?)
$(info $$(FOOBAR_OUTPUT) == $(FOOBAR_OUTPUT))
$(info $$(lastword $$(FOOBAR_OUTPUT)) == $(lastword $(FOOBAR_OUTPUT)))
ifneq (0,$(lastword $(FOOBAR_OUTPUT)))
$(error not good)
endif

给出

$ make
/bin/sh: foobar: command not found
$(FOOBAR_OUTPUT) == I hope this works 127
$(lastword $(FOOBAR_OUTPUT)) == 127
Makefile:12: *** not good. Stop.

关于android - 在 AOSP Android.mk 文件中,如何执行命令并在命令失败时使构建失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38142121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com