readme overview

This commit is contained in:
Noah Swerhun 2024-03-04 12:24:33 -06:00
parent 36a41c2789
commit 17ee1a3b70

View file

@ -1,5 +1,29 @@
# ngen # ngen
Build file generator (engine) for the [ninja build Build file generator (engine) for the [`ninja` build
system](https://ninja-build.org/). system](https://ninja-build.org/).
Licensed under the GPLv3. Licensed under the GPLv3.
## Methodology and Overview
The problem with existing meta build systems---or makefile generators---like
[Meson](https://mesonbuild.com/) and [CMake](https://cmake.org/) is that they
are needlessly complex for small-to-medium-sized C/C++ projects. These projects
are just large enough that hand-writing a makefile would be painful, but trying
to configure a large meta build system would be just as painful. It is
unacceptable that building a simple project with 10 .c files and a library
requires knowledge of a unique, obscure configuration language which is
constantly changing.
*ngen* aims to make generating build files for these small C/C++ projects as
simple as possible by using a basic key-value configuration file using patterns
that any experienced programmer should be familiar with. In doing so, ngen
fills the gap between writing your own makefile and wrangling with
CMakeLists.txt.
ngen generates files for the [Ninja](https://ninja-build.org/) build system.
Ninja is a small, modern build system that uses a bare-bones configuration
language that is easy to both read and generate (but not necessarily easy to
write by hand). "Where other build systems are high-level languages Ninja aims
to be an assembler," according to Ninja's website. It can be thought of as a
simpler, faster replacement for the classic `make`, . It is used by default by
Meson; CMake can also be configured to use ninja as a backend.