Makefile忽略segfault

时间:2014-10-02 19:26:20

标签: makefile gnu-make

我正在尝试使用GNU Make使用.mmpz自动将一组.ogg个文件转换为lmms个文件。目前,lmms中存在一个错误,导致它在生成输出文件后出现段错误,导致make吐出错误。在规则强制-之前添加make以忽略错误并阻止它删除输出文件,但仍会生成错误消息。我尝试了以下内容:

-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg
-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg 2> /dev/null
-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg || true

所有产生的东西都是

/bin/sh: line 1:  3325 Segmentation fault      (core dumped) lmms -r resources/mmpz/song.mmpz -f ogg -o content/music/song.ogg 2> /dev/null
Makefile:28: recipe for target 'content/music/song.ogg' failed
make: [content/music/song.ogg] Error 139 (ignored)

考虑到segfault是预期的,并不表示无法生成输出文件,有没有办法隐藏此错误,直到修复错误? make -i似乎仍然输出错误。

1 个答案:

答案 0 :(得分:3)

define EXPECTED_FAIL
if ! { $1 ; } 2>$@.temp; then \
    echo EXPECTED FAILURE: ; cat $@.temp; \
fi
endef

<target>: <prerequisites>
    $(call EXPECTED_FAIL, lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg )