Makefile 如何仅使用一个parralel作业递归运行make?

Makefile 如何仅使用一个parralel作业递归运行make?,makefile,Makefile,我有一个运行其他makefile的makefile。其中一个makefiles有缺陷,如果使用-j2或更多代码运行,有时会失败。我如何递归地调用那个makefile,使它只有一个作业,没有并行性?我通常使用-j9运行我的外部makefile,就像这样添加选项-j1,$(MAKE)-C${PROJECT\u BUILD\u DIR}-j1 install工作。像这样添加选项$(MAKE)-C${PROJECT\u BUILD DIR}-j1安装可以正常工作。添加-j1使命令行运行makefile肯

我有一个运行其他makefile的makefile。其中一个makefiles有缺陷,如果使用
-j2
或更多代码运行,有时会失败。我如何递归地调用那个makefile,使它只有一个作业,没有并行性?我通常使用
-j9

运行我的外部makefile,就像这样添加选项
-j1
$(MAKE)-C${PROJECT\u BUILD\u DIR}-j1 install
工作。

像这样添加选项
$(MAKE)-C${PROJECT\u BUILD DIR}-j1安装可以正常工作。

添加
-j1
使命令行运行makefile肯定可以正常工作。不过,我建议用另一种方式解决这个问题

谁是麻烦制造者

A:规则中具有错误依赖项的Makefile

因此,正确的解决方案是修复makefile。最简单的修复方法就是添加特殊的
.NOTPARALLEL
目标

GNU制造手册:

.NOTPARALLEL被称为目标,则调用make 将连续运行,即使给定了“-j”选项。任何 递归调用的make命令仍将并行运行配方 (除非其makefile也包含此目标)。有什么先决条件吗 忽略此目标

所以只要加上

# TBD: This makefile is broken: it doesn't support -j make option.
.NOTPARALLEL:

不要触摸运行它的命令行。这样做将是一种自我文档化的解决方法。

添加
-j1
使命令行运行makefile肯定会起作用。不过,我建议用另一种方式解决这个问题

谁是麻烦制造者

A:规则中具有错误依赖项的Makefile

因此,正确的解决方案是修复makefile。最简单的修复方法就是添加特殊的
.NOTPARALLEL
目标

GNU制造手册:

.NOTPARALLEL被称为目标,则调用make 将连续运行,即使给定了“-j”选项。任何 递归调用的make命令仍将并行运行配方 (除非其makefile也包含此目标)。有什么先决条件吗 忽略此目标

所以只要加上

# TBD: This makefile is broken: it doesn't support -j make option.
.NOTPARALLEL:

不要触摸运行它的命令行。这样做将是一种自我文档化的解决方法。

调用内部make as
$(make)-j1
不能满足您的需要?调用内部make as
$(make)-j1
不能满足您的需要?