【发布时间】:2023-03-27 09:45:01
【问题描述】:
我正在开发一个使用 cmake+ninja 构建的 c++ 项目,在 64 线程计算机上大约有 1200 个构建目标。
编译一个翻译单元需要 10 分钟,大多数其他翻译单元的编译速度相当快,因此构建所有其他目标一起(在所有线程上构建)只需大约 9 分钟。慢速翻译单元与其他单元相当独立,因此不必安排延迟,但事实证明默认安排延迟,这样一个完整的构建需要我在 15 到 20 分钟之间,并且在最后只有一个线程可以处理几乎所有其他目标。如果首先安排慢速翻译单元,阻塞一个线程大约 10 分钟,而所有其他线程都在项目的其余部分工作,整个项目在 10 分钟内构建,那么构建对我来说会更快。
在 cmake 或 ninja 中是否有一种方法可以改变调度的优先级以指出缓慢或“请早点”的目标而不会弄乱依赖关系?
【问题讨论】:
-
我也想知道这个问题的答案。我也有类似的需求。