如何在Makefile中定义错误状态检查函数

如何在Makefile中定义错误状态检查函数,makefile,Makefile,在我的makefile中 运行_sh: echo"run script";\ toolk -run -tcl sequence.tcl | tee ./log/catch.log;\ $(call chck "./log/catch.log") 我想从上面的日志文件中捕获error status=0消息并检查,如果不是“0”,则退出表单生成文件。所以我编写了这个函数,并在我的目标run_sh中调用它 define chck log=$(1) STAT=`cat $(1) | grep "exi

在我的
makefile

运行_sh:

echo"run script";\
toolk -run -tcl sequence.tcl | tee ./log/catch.log;\
$(call chck "./log/catch.log")
我想从上面的日志文件中捕获
error status=0
消息并检查,如果不是“0”,则退出表单生成文件。所以我编写了这个函数,并在我的目标run_sh中调用它

define chck
log=$(1)
STAT=`cat $(1) | grep "exit status=0"`
ifneq ($(STAT),"exit status=0")
$(error error in script)
endif
endef
是正确的写入方式,因为我遇到了错误。

这样如何:

run_sh:
    echo"run script"; toolk -run -tcl sequence.tcl | tee ./log/catch.log;
    grep "error status=0" ./log/catch.log || exit
编辑:

我没有访问GNUMake 3.79.1的权限,所以我们必须进行一些实验。设置此规则:

run_sh:
    exit

试试“make run_sh”(不是“make”或“make all”或其他任何东西)。结果如何?(不要只说“它不工作”,向我们显示输出。)

我还尝试定义宏$(exit_s)define exit_s$(脚本中的错误)endef来代替上面提到的退出。如果我执行make-it-exits时出错而不运行任何东西。@kunal:
exit
在makefile中为我工作——我在发布它之前测试了它。您使用的是什么版本的Make?(另外,我知道为什么退出不起作用,但首先要做的是。)我使用的是GNU Make版本3.79.1,退出没有按照预期的方式工作,我的意思是我的默认目标是所有:run_sh run_tcl,如果我在run_sh exit中出现错误,那么run_tcl仍然执行,这不是预期的。Help me out@Beta。一旦日志文件中没有上一个目标运行的消息“exit status=0”,makefile应该退出,并且不应该执行任何其他目标。