停止构建仅限于外部工具的错误,而不是警告

时间:2014-11-10 17:02:43

标签: makefile gnu-make

在具有相当复杂的构建过程的项目中,我需要通过一个工具传递一些生成的文件,该工具在stdout stdin上生成一些输出。

相应的食谱是:

out-file: in-file
    @tool < $< > $@

(实际上,名称是通用的,不是静态的,但这不是重点)

我的问题是此工具在警告时返回1,在错误时返回2,我想在错误上停止 。上面写的食谱的方式,make将停止警告,如果我写:

out-file: in-file
    @-tool < $< > $@

然后它会停止错误。

如何实现此行为,最好只使用make?

Manual reference

1 个答案:

答案 0 :(得分:1)

如果您关心的代码是返回代码,则需要手动捕获错误并仅退出并显示错误。

类似的东西:

@tool < $< > $@; [ $$? -ne 2 ]

或更确切地说:

@tool < $< > $@; ret=$$?; [ $$ret -eq 0] || [ $$ret -eq 1 ]