No description
Find a file
2024-03-04 21:21:53 -06:00
src improved build message 2024-03-04 21:21:53 -06:00
.gitignore first commit; core functionality done 2024-03-03 21:46:19 -06:00
Cargo.lock accept config and output file on command line 2024-03-04 14:38:11 -06:00
Cargo.toml accept config and output file on command line 2024-03-04 14:38:11 -06:00
install.sh added build instructions to readme 2024-03-04 17:08:27 -06:00
LICENSE added readme and license 2024-03-03 21:53:29 -06:00
README.md readme formatting 2024-03-04 20:58:14 -06:00
uninstall.sh added build instructions to readme 2024-03-04 17:08:27 -06:00

ngen

Build file generator (engine) for the Ninja build system.

Licensed under the GPLv3.

Methodology and Overview

The problem with existing meta build systems---or makefile generators---like Meson and CMake 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 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.

Building

Build: cargo build --release

Install: sudo sh install.sh

Uninstall: sudo sh uninstall.sh