【问题标题】:How to have make fail on some warnings but not others如何在某些警告上失败,但在其他警告上失败
【发布时间】:2019-07-03 22:07:11
【问题描述】:

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

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

tidy 产生很多警告,我可以使用标志 --show-warnings false 抑制这些警告,但是尽管抑制了警告,tidy 的退出状态仍然是 1 而不是 0,因此 make 在中途失败食谱。面对tidy 给出退出状态1,我如何让make 继续,同时在任何其他配方发出警告时仍然允许make 失败?

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

编辑后:在Make: how to continue after a command fails? 中,问题与在执行特定命令时如何在 any 非零退出状态后继续获得make 相关,而在我的情况下,我想要tidy 的退出状态为 2 表示错误,导致 make 失败,但我希望 tidy 的退出状态为 1,表示警告to allowmake to continue`。

【问题讨论】:

标签: makefile error-handling


【解决方案1】:

最简单的解决方案:

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

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

但请检查整洁的exit codes

退出状态

0

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

1

有警告。

2

有错误。

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

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

【讨论】:

  • 不错。我从中得到的一般教训(我希望是正确的)是设计一个 shell 命令,结合关键配方部分,以便 shell 命令产生正确的错误代码结构。
猜你喜欢
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
相关资源
最近更新 更多