Ninja
Last updated
Last updated
Ninja представляет собой улучшенную и доработанную версию утилиты Make. Главная цель которой – автоматизация сборки и её ускорение, а также ускорение последующих пересборок, на основе сгенерированных утилитой файлов и решение типовых проблем при кроссплатформенной разработке.
Пример базового файла build.ninja:
Используемые понятия:
Узел (Node) – это просто файл. Входной (исходники), выходной (объектные файлы) – это все узлы или вершины графа.
Правило (Rule) – по сути это просто команда с шаблоном аргументов. Например, вызов gcc – правило, а его аргументы – $FLAGS $INCLUDES $DEFINES и еще какие-то общие аргументы.
Ребро (Edge) – соединяет несколько входных узлов и один выходной узлов, посредством Правила. Вся система сборки основана на том, что последовательно обходит граф, выполняя команды для ребер. Как только все ребра обработаны, проект собран.
Состояние (State) – это контейнер со всем вышеперечисленным, который система сборки и использует.