XUtils

Ninja

Small, simple build system with a focus on speed. [`Apache 2.0`](https://directory.fsf.org/wiki/License:Apache-2.0)


Building Ninja itself

You can either build Ninja via the custom generator script written in Python or via CMake. For more details see the wiki.

Python

./configure.py --bootstrap

This will generate the ninja binary and a build.ninja file you can now use to build Ninja with itself.

If you have a GoogleTest source directory, you can build the tests by passing its path with --gtest-source-dir=PATH option, or the GTEST_SOURCE_DIR environment variable, e.g.:

./configure.py --bootstrap --gtest-source-dir=/path/to/googletest
./ninja all     # build ninja_test and other auxiliary binaries
./ninja_test`   # run the unit-test suite.

Use the CMake build below if you want to use a preinstalled binary version of the library.

CMake

cmake -Bbuild-cmake
cmake --build build-cmake

The ninja binary will now be inside the build-cmake directory (you can choose any other name you like).

To run the unit tests:

./build-cmake/ninja_test

Generating documentation

Ninja Manual

You must have asciidoc and xsltproc in your PATH, then do:

./configure.py
ninja manual doc/manual.pdf

Which will generate doc/manual.html.

To generate the PDF version of the manual, you must have dblatext in your PATH then do:

./configure.py    # only if you didn't do it previously.
ninja doc/manual.pdf

Which will generate doc/manual.pdf.

Doxygen documentation

If you have doxygen installed, you can build documentation extracted from C++ declarations and comments to help you navigate the code. Note that Ninja is a standalone executable, not a library, so there is no public API, all details exposed here are internal.

./configure.py   # if needed
ninja doxygen

Then open doc/doxygen/html/index.html in a browser to look at it.


Articles

  • coming soon...