Makefile 使用并行生成立即停止编译

Makefile 使用并行生成立即停止编译,makefile,gnu-make,Makefile,Gnu Make,有没有办法让GNU make(即make-jN)的并行调用在遇到错误时立即停止所有编译 目前,我看到一条“等待未完成的作业”消息&然后在现有make进程完成时有许多行输出。没有办法做到这一点(在GNU make中)。唯一可能的方法是在你所有的食谱中添加一个样板节,这样如果它们失败了,你就可以抓住失败并使用killall或类似的方法来杀死make的所有实例。当然是狡猾和危险的 当然,您可以自己点击CTRL-C停止make。我看到这是一个旧线程,但答案并不确定。这对我来说一直很有效: #!/usr/

有没有办法让GNU make(即make-jN)的并行调用在遇到错误时立即停止所有编译


目前,我看到一条“等待未完成的作业”消息&然后在现有make进程完成时有许多行输出。

没有办法做到这一点(在GNU make中)。唯一可能的方法是在你所有的食谱中添加一个样板节,这样如果它们失败了,你就可以抓住失败并使用killall或类似的方法来杀死make的所有实例。当然是狡猾和危险的


当然,您可以自己点击CTRL-C停止make。

我看到这是一个旧线程,但答案并不确定。这对我来说一直很有效:

#!/usr/bin/make -f

MAKEPID:= $(shell echo $$PPID)

$(mytargets):
    @script_that_runs_in_parallel.sh $@ || kill -TERM $(MAKEPID)

这很残酷,但它确实起到了作用。

这不起作用,但经过一点小小的调整,我让它起了作用。我在运行make的脚本中添加了
set-m
,并使用了
kill-TERM-$(MAKEPID)
。这将杀死整个流程组,而不仅仅是最初的make。