我想ninja
同时启动多个构建。每个构建都在自己的目录中,并且有自己的build.ninja
文件。
我可以做到以下几点:
cd <build-dir-1>
ninja &
cd <build-dir-2>
ninja &
...
cd <build-dir-last>
ninja
....但这有几个问题:
- Ninja 使用的默认线程数在同时启动多个独立构建时可能不是最佳的。
- 我预计输出将以不明智的方式交错。
编辑我也可以将ninja
调用保留在前台(这是我目前正在做的),但是没有简单的方法来估计(整个)构建的当前进度是什么。
所以,我想做以下事情之一:
- 将
build.ninja
文件合并到一个大文件中,该文件可以在一次ninja
调用中执行两个构建。 - 以某种方式启动
ninja
多个目标build.ninja
脚本。
看起来不支持第二个选项ninja
,但第一个选项似乎可以使用subninja <build-dir-n>/build.ninja
. 有没有人做过这样的事情?有没有什么隐藏的陷阱?或者,我可以按顺序执行构建(即上述顺序但没有&
s),但这感觉不是正确的解决方案。
用例
我正在使用,它为每个构建配置(发布和调试)CMake
生成一个单独的文件。build.ninja
我还针对多个平台,所以我有多个编译器,并且 CMake 必须为每个平台单独运行。所以如果我想为所有平台构建发布和调试代码,我需要运行多次。ninja