cmake:动态作业池更改

cmake: dynamic job pool change

是否可以进行以下操作?我有一个 cmake 项目,我可以使用 16 个线程来构建它。但在这个 cmake 中,我包含了一些其他项目,这些项目作为父项目的一部分构建。子项目不能用 16 线程构建,出于某种原因,可以说它具有大量模板化代码并且机器刚好内存不足。如果编译作业的数量限制为 4,则已知该子项目可以成功完成构建。如何在不将整个项目切换为仅使用 4 个作业构建的情况下实现最大构建性能?一旦子项目开始构建到 4,就会动态更改作业池,然后在编译有问题的项目后将其增加回 16。

分别构建两次即可:

cmake --build . --target child --parallel 4
# followed by
cmake --build . --target parent --parallel 16

我认为您也可以创建一个包含 4 个工人的工作池,然后将该工作池分配给子目标。