如何检查Makefile shell调用的退出状态?

时间:2011-04-28 10:38:51

标签: makefile

我有一个Makefile,它运行一个成功返回非零值的程序,并在失败时返回另一个非零值。我知道我可以通过在命令前加上 - 来忽略退出状态,但这不起作用,因为我需要知道命令是否成功。

3 个答案:

答案 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