Skip to content

List of generators producing ninja build files

Christophe Delord edited this page Feb 3, 2024 · 42 revisions

This page lists generators that can produce ninja files. Some of them are generally usable; some are one-off scripts specific to a given project.

General Purpose

  • Bang is a Ninja file generator written and scripted in LuaX. It implements Ninja primitives as a Lua DSL and adds some higher level functions (hybrid rule/build statements, help, clean and install targets, rule chains, functional programming...).

  • bfg9000 is a cross-platform build configuration system with an emphasis on making it easy to define how to build your software. It converts a Python-based build script into the appropriate files for your underlying build system of choice (Make, Ninja, or MSBuild).

  • Blade Build is a powerful declarative multilingual build system. it used to use scons as the backend but got notable speed improvement after switching the backend to ninja.

  • Blueprint takes build descriptions written in Go and generates ninja files from them.

  • BuildFox is a minimalistic ninja generator with focus on less overhead and explicit configuration files. Plus it also generates IDE projects that use ninja as build system.

  • CMake is a general meta-build system. CMake runs on most platforms, and can generate project files in many formats, including ninja (use -GNinja).

  • Craftr is a powerful, modular Python based build system that aims for cross-platform compatibility and native support for various toolchains and libraries.

  • GENie - Project generator tool.

  • GN is the current meta-build system for the Chromium project and aims to be faster than GYP (the previous system) while generating more readable, maintainable build files.

  • GYP is also a general meta-build system that runs on most platforms. Among other formats, it can generate ninja manifest files as well as Visual Studio and Xcode project files that can optionally delegate to ninja for the actual build (use -f ninja).

  • Jagen just another build system generator tool with focus on management of projects consisting of multiple packages. It compiles declarative rules to build file for Ninja which does the actual work.

  • kati is a GNU make clone that converts Makefiles to ninja build files. The main goal of this tool is to speed up incremental builds of Android.

  • Meson is another general-purpose build system that generates Ninja scripts; to be precise, it uses Ninja as its default build generator.

  • nimbus takes build descriptions written in NimScript and generates ninja files from them.

  • premake is a general meta-build system. premake runs on most platforms, and can generate project files in many formats, including ninja with it module premake-ninja.

  • pyrate is a tool to generate ninja files for simple projects using a python based build configuration script

  • Rōnin is a straightforward but powerful build system based on Ninja and Python

  • xmake is a cross-platform build utility based on Lua xmake project -k ninja

One-offs

These links are to projects that have written their own custom ninja generation logic:

Utilities

  • Ninja's ninja_syntax.py script (also available from PyPI as ninja-syntax package) is a low-level Python module that generates ninja files. It is just a generator of the ninja syntax, and unlike the above build tools it doesn't provide any higher-level assistance in setting up your build.

  • ninja_syntax.lua is a Lua-based clone of the above python script.

  • ninja-build-gen is Ninja generator library for that runs on NodeJS.

  • language-ninja is a Haskell library for parsing, pretty-printing, and "compiling" Ninja files.

Clone this wiki locally