【发布时间】:2016-07-01 09:42:32
【问题描述】:
在 Android.mk 文件中,我有以下行执行 bash 脚本:
$(info $(shell ($(LOCAL_PATH)/build.sh)))
但是,如果命令失败,构建会继续而不是退出。
在这种情况下如何使整个构建失败?
【问题讨论】:
标签: android makefile android-source
在 Android.mk 文件中,我有以下行执行 bash 脚本:
$(info $(shell ($(LOCAL_PATH)/build.sh)))
但是,如果命令失败,构建会继续而不是退出。
在这种情况下如何使整个构建失败?
【问题讨论】:
标签: android makefile android-source
转储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.
【讨论】:
stdout 并通过lastword 测试的技巧修改了我的答案。