我有一个Makefile,它运行一个成功返回非零值的程序,并在失败时返回另一个非零值。我知道我可以通过在命令前加上 - 来忽略退出状态,但这不起作用,因为我需要知道命令是否成功。
答案 0 :(得分:16)
您可以使用包含最后返回值的shell $?
变量,在同一Makefile行上的第二个命令上测试返回值。
例如使用false
命令显然会停止编译:
test:
/bin/false ; /usr/bin/test "$$?" -eq 1 # <-- make does not stop here
/bin/echo "Continues ..."
/bin/false # <-- make stops here
答案 1 :(得分:8)
使用
command || [ $$? -eq v ]
作为您的命令,用命令替换命令,用成功返回的值替换 v 。
(这只是Didier Trosset答案的更紧凑版本。)
答案 2 :(得分:1)
根据工具失败时的行为,您可以检查输出文件是否存在。类似的东西:
@if test ! -f $(FILE); then exit 2; fi