如果我的程序必须针对不同的结果(主要是错误)返回不同的值(例如 0、1、2、3 等),则调用该程序的 makefile 将不得不停止执行其余的 makefile 命令。即使该命令产生错误(返回非零值),是否有办法继续执行生成文件?
谢谢你们。
如果我的程序必须针对不同的结果(主要是错误)返回不同的值(例如 0、1、2、3 等),则调用该程序的 makefile 将不得不停止执行其余的 makefile 命令。即使该命令产生错误(返回非零值),是否有办法继续执行生成文件?
谢谢你们。
mycommand; test $? -gt 3
根据需要更改测试。我不认为使用-
or-k
是一个好主意,因为它会停止make
检测错误。
请注意,在生成文件中时,这 2 个命令必须位于同一行。
在评论反馈后添加: 您还可以执行以下操作,以允许您在对错误做出反应之前无条件地运行后续命令:
mycommand; status=$PIPESTATUS; follow-on-command && test $status -gt 3
要测试我知道将返回非零退出代码的命令,我使用如下:
test: mybadcommand
mybadcommand; test $$? -eq 1
这测试 mybadcommand 返回 1 退出值。请注意,在 Makefiles 中,您需要转义指向退出状态的 shell 变量,因为在 make $? 表示比目标更新的依赖项。
因此,在上面的代码片段中,小心使用$$? 而不是 $?。