5

如果我的程序必须针对不同的结果(主要是错误)返回不同的值(例如 0、1、2、3 等),则调用该程序的 makefile 将不得不停止执行其余的 makefile 命令。即使该命令产生错误(返回非零值),是否有办法继续执行生成文件?

谢谢你们。

4

2 回答 2

3
mycommand; test $? -gt 3 

根据需要更改测试。我不认为使用-or-k是一个好主意,因为它会停止make检测错误。

请注意,在生成文件中时,这 2 个命令必须位于同一行。

在评论反馈后添加: 您还可以执行以下操作,以允许您在对错误做出反应之前无条件地运行后续命令:

mycommand; status=$PIPESTATUS; follow-on-command && test $status -gt 3
于 2012-06-27T08:47:18.167 回答
3

要测试我知道将返回非零退出代码的命令,我使用如下:

test: mybadcommand
    mybadcommand; test $$? -eq 1

这测试 mybadcommand 返回 1 退出值。请注意,在 Makefiles 中,您需要转义指向退出状态的 shell 变量,因为在 make $? 表示比目标更新的依赖项。

因此,在上面的代码片段中,小心使用$$? 而不是 $?。

于 2012-08-15T20:38:09.420 回答