【问题标题】:Stop compilation immediately with parallel make使用并行 make 立即停止编译
【发布时间】:2012-01-24 02:45:13
【问题描述】:

有什么方法可以让 GNU make 的并行调用(即 make -jN)在遇到错误时立即停止所有编译?

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

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

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

    #!/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。
    【解决方案2】:

    没有办法做到这一点(在 GNU make 中)。唯一可能的方法是将样板节添加到所有配方中,这样如果它们失败,您将捕获失败并使用 killall 或类似的东西来杀死所有 make 实例。肯定是棘手和危险的。

    当然你也可以自己按CTRL-C来停止make。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2019-01-11
      相关资源
      最近更新 更多