带有多个“build.ninja”文件的“ninja”?

Kyl*_*and 5 c++ build cmake ninja

我想ninja同时启动多个构建。每个构建都在自己的目录中,并有自己的build.ninja文件。

我只能执行以下操作:

cd <build-dir-1>
ninja &
cd <build-dir-2>
ninja &
...
cd <build-dir-last>
ninja
Run Code Online (Sandbox Code Playgroud)

....但是这有几个问题:

  • 当同时启动多个独立构建时,Ninja 使用的默认线程数可能不是最佳的。
  • 我预计,输出将以一种不合理的方式交错。

编辑我也可以将ninja调用保留在前台(这是我目前正在做的事情),但是没有简单的方法来估计(整个)构建的当前进度。

因此,我想执行以下操作之一:

  1. build.ninja文件合并为一个大文件,可以在一次ninja调用中执行两种构建。
  2. 以某种方式启动ninja多个目标build.ninja脚本。

看起来不支持第二个选项ninja,但第一个似乎可以很容易地使用subninja <build-dir-n>/build.ninja. 有没有人做过这样的事情?有什么隐藏的陷阱吗?或者,我可以按顺序执行构建(即上面的顺序但没有&s),但这不是正确的解决方案。

用例

我正在使用CMake,它build.ninja为每个构建配置(发布和调试)生成一个单独的文件。我也针对多个平台,所以我有多个编译器,并且必须为每个平台单独运行 CMake。所以如果我想为所有平台构建发布调试代码,我需要运行多次。ninja