如何使某些警告失败而不是其他警告

时间:2019-02-10 03:47:00

标签: makefile error-handling

我有一个make文件,其中包括:

%.dat: %.txt
   ... PREPROCESSING OF TEXT FILE
   tidy -o $*.html $<
   ... FURTHER PROCESSING

tidy产生许多警告,我可以用标志--show-warnings false禁止显示这些警告,但是尽管警告被抑制,但tidy的退出状态仍为1而不是0,因此{{ 1}}在整个食谱过程中都失败了。我该如何make面对make并给出退出状态1的同时继续让tidy失败(如果还有其他配方发出警告)呢?

我已经看过这两个问题(Have make fail if unit tests failgcc, make: how to disable fail on warning?),但似乎都没有解决这个问题。

修改后:在Make: how to continue after a command fails?中,问题涉及在执行特定命令后,如何使make任何非零退出状态之后继续运行,而在情况下,我希望从make退出状态为2表示错误,导致tidy失败,但是我希望从make退出状态为1表示警告tidy继续。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案:

tidy -o $*.html $< || true

因此,如果整洁的退出代码不为零,则true会产生零退出代码。

但是请检查整洁的exit codes

  

退出状态

     

0

     

所有输入文件均已成功处理。

     

1

     

有警告。

     

2

     

有错误。

也许您只想跳过错误代码1。在这种情况下:

tidy -o $*.html $< || [ $$? -eq 1 ] && true