以下Makefile目标不会失败:
test:
echo `blah`
除了在上一行单独运行反引号命令之外,我如何使它失败。
$ make --version
GNU Make 4.0
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
这不是制造问题,不是真的。 Make只需等待它调用的shell完成,然后检查退出代码。如果为0
(成功),则make假定作业成功。如果还有其他值,请使该作业失败。
如果在外壳程序上运行此命令,则会看到未保留退出代码:
$ echo `bah`
...errors...
$ echo $?
0
对此,make无能为力。您将必须找到一种方法来确保命令以失败方式退出。您没有给我们足够的信息来说明要运行什么实际命令来帮助您解决此问题。
ETA
有很多可能性。但是,由于您仍未提供任何实际细节,因此我只建议一种可能性:您可以测试结果值以查看其是否为空:
test:
var=`blah`; [ -n "$$var" ] || exit 1; ...do stuff with $$var...