Makefile 为什么MAKEFLAGS+=-j12不再适用于Make4.2

Makefile 为什么MAKEFLAGS+=-j12不再适用于Make4.2,makefile,Makefile,我从make 4.1升级到4.2,make文件顶部的指令不再有效: MAKEFLAGS += -j12 我在发行说明中找到了这一点,但没有帮助: * The amount of parallelism can be determined by querying MAKEFLAGS, even when the job server is enabled (previously MAKEFLAGS would always contain only "-j", with no numbe

我从make 4.1升级到4.2,make文件顶部的指令不再有效:

MAKEFLAGS += -j12
我在发行说明中找到了这一点,但没有帮助:

* The amount of parallelism can be determined by querying MAKEFLAGS, even when
  the job server is enabled (previously MAKEFLAGS would always contain only
  "-j", with no number, when job server was enabled).

这无助于解决您的问题,但它是一个bug:

bug 49844:没有显式进程计数的“make-j”有时无法并行化


这不是同一个问题,但肯定是同一个原因:从4.2开始,通过MAKEFLAGS设置-j就不起作用了。我早就把它合理化为一个特性,真的:每个make会话应该只有一个作业服务器,而且当使用$make调用sub make时,肯定是这样的,这是维护人员在任何情况下强烈建议的。因此,在子make中调整-j的值不应该有任何效果,在最顶层的make中,它可以在命令行上给出,也许使用包装器脚本。在我看来,这是一个很强的兼容性中断。MAKEFLAGS应该适用于任何标志。