【发布时间】:2012-01-24 02:45:13
【问题描述】:
有什么方法可以让 GNU make 的并行调用(即 make -jN)在遇到错误时立即停止所有编译?
目前我看到一条“等待未完成的工作”消息,然后在现有的 make 进程完成时出现多行输出。
【问题讨论】:
有什么方法可以让 GNU make 的并行调用(即 make -jN)在遇到错误时立即停止所有编译?
目前我看到一条“等待未完成的工作”消息,然后在现有的 make 进程完成时出现多行输出。
【问题讨论】:
我看到这是一个旧线程,但答案不是确定的。这对我来说一直很有效:
#!/usr/bin/make -f
MAKEPID:= $(shell echo $$PPID)
$(mytargets):
@script_that_runs_in_parallel.sh $@ || kill -TERM $(MAKEPID)
这很残酷,但它确实有效。
【讨论】:
set -m,并使用了kill -TERM -$(MAKEPID)。这会杀死整个进程组,而不仅仅是最初的 make。
没有办法做到这一点(在 GNU make 中)。唯一可能的方法是将样板节添加到所有配方中,这样如果它们失败,您将捕获失败并使用 killall 或类似的东西来杀死所有 make 实例。肯定是棘手和危险的。
当然你也可以自己按CTRL-C来停止make。
【讨论】: