Ninja

Ninja is a small build system with a focus on speed. It differs
from other build systems in two major respects: it is designed to have
its input files generated by a higher-level build system, and it is
designed to run builds as fast as possible.

Why yet another build system?

Where other build systems are high-level languages Ninja aims to be
an assembler.

Should you use Ninja?

Ninja's low-level approach makes it perfect for embedding into more
featureful build systems; see a
list of existing tools. Ninja is used to build Google Chrome,
parts of Android, LLVM, and can be used in many other projects due to
CMake's Ninja backend.

See the manual for more: philosophical
background, whether and how you can use Ninja for your project,
platform support, and details about the language semantics.