Build tools are software utilities essential for automating the process of compiling and packaging code for use.

The four central aspects of a build tool are:

  1. Build Environment Setup
  2. Task Management
  3. Automation
  4. Dependency Management
  5. Code Optimization

CMake

CMake is a build tool widely used for the C/C++ Languages, but can be used to build code from other languages as well.

Make

make is a utility that automatically determines which targets need to be

Ninja

Ninja is a build system which focuses on speed and is primarily designed to be used by higher-level build systems like CMake. Per ninja-build.org, “It takes as input the interdependencies of files (typically source code and output executables) and orchestrates building them, quickly”.

It has been designed for speed, adaptability and ease of use.

Ninja looks for a file named build.ninja in the working directory and builds all out-of-date targets.