Makefile make:禁用某些目标的并行执行

Makefile make:禁用某些目标的并行执行,makefile,parallel-processing,Makefile,Parallel Processing,我有一个编译工作,链接需要很多IO工作。我们有大约12个内核,所以我们运行make-j13,但是当涉及到连接6个目标时,我希望这些都是以循环的方式完成的。我想让一个依赖于下一个,但我认为这将打破个人目标。有什么办法解决这个小问题吗?它不会打破个人目标。 您可以为一个目标创建任意数量的(:)规则,只要其中只有一个具有构建它的实际方法。这似乎是一个很好的用例。make本身没有提供一种机制来请求“N个,但一次不超过M个” 您可以尝试使用链接器规则配方中的包中的sem命令。它的文件有一个完整的框架。在您

我有一个编译工作,链接需要很多IO工作。我们有大约12个内核,所以我们运行make-j13,但是当涉及到连接6个目标时,我希望这些都是以循环的方式完成的。我想让一个依赖于下一个,但我认为这将打破个人目标。有什么办法解决这个小问题吗?

它不会打破个人目标。
您可以为一个目标创建任意数量的(
)规则,只要其中只有一个具有构建它的实际方法。这似乎是一个很好的用例。

make
本身没有提供一种机制来请求“N个,但一次不超过M个”

您可以尝试使用链接器规则配方中的包中的
sem
命令。它的文件有一个完整的框架。在您的示例中,您将允许
make
一次启动13个
sem
s,但一次只有一个链接器将运行链接器,而其他链接器将被阻塞


不利的一面是,您可能会遇到这样的情况:您的
make
的13个工作时段中有5个与
sem
实例绑定,这些实例都在等待链接器进程完成。根据构建的结构,这可能意味着浪费一些CPU时间。仍然比6个链接器一次敲打磁盘要好,不过:-)

这怎么可能“打破单个目标”?你能更具体一点吗?我尝试了|依赖顺序,但它没有按预期工作,因为它即使在编译单个目标时也会生成反依赖。您能更具体一点吗?你到底试了什么?