`ninja` с несколькими файлами` build.ninja`?

Я хотел бы запустить несколько ninja строит одновременно. Каждая сборка находится в своем собственном каталоге и имеет свой build.ninja файл.

Я мог бы просто сделать следующее:

cd <build-dir-1>
ninja &
cd <build-dir-2>
ninja &
...
cd <build-dir-last>
ninja

….но есть несколько проблем с этим:

  • Число потоков по умолчанию, используемых Ninja, вероятно, не оптимально при одновременном запуске нескольких независимых сборок.
  • Я полагаю, что результат будет чередоваться неосмысленным образом.

РЕДАКТИРОВАТЬ Я мог бы также просто сохранить ninja вызовы на переднем плане (что я сейчас и делаю), но тогда не было бы простого способа оценить, каков текущий прогресс (всей) сборки.

Итак, я хотел бы сделать одно из следующего:

  1. объединить build.ninja файлы в один большой файл, который может выполнять
    оба строятся в одном ninja призывание.
  2. как-то запустить ninja с несколькими целями build.ninja скрипты.

Не похоже, что второй вариант поддерживается ninja, но первый кажется, что это можно сделать достаточно легко, используя subninja <build-dir-n>/build.ninja, Кто-нибудь делал что-то подобное раньше? Есть ли скрытые подводные камни? В качестве альтернативы, я мог бы просто выполнить сборку в последовательности (то есть в приведенной выше последовательности, но без &s), но это не похоже на правильное решение.

Использование регистра

я использую CMake, который генерирует отдельный build.ninja файл для каждой конфигурации сборки (выпуск и отладка). Я также ориентируюсь на несколько платформ, поэтому у меня есть несколько компиляторов, и CMake должен запускаться отдельно для каждой платформы. Так что, если я хочу построить релиз а также код отладки для все платформы, мне нужно запустить ninja многократно.

4

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]