Meson
Table of contents
What is Meson?
The main design point of Meson is that every moment a developer spends writing or debugging build definitions is a second wasted. So is every second spent waiting for the build system to actually start compiling code.
Features
- multiplatform support for Linux, OSX, Windows, Gcc, Clang, Visual Studio and others
- supported languages include C, C++, Fortran, Java, Rust
- build definitions in a very readable and user friendly non-turing complete DSL
- cross compilation for many operating systems as well as bare metal
- optimized for extremely fast full and incremental builds without sacrificing correctness
- built-in multiplatform dependency provider that works together with distro packages
- fun!
Installation
apt install meson ninja-build
Project initialization
mkdir testproject
meson init --name testproject --build
Why Meson instead of GNU/Make
Make is a tool which controls the generation of executables and other non-source files of a program from the program’s source files.
TBD
Why Meson instead of Autoconf
GNU Autoconf is a tool for producing configure scripts for building, installing and packaging software on computer systems where a Bourne shell is available.
TBD
Why Meson instead of CMake
CMake is a family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.
TBD
Why Meson instead of Maven
Apache Maven is a Java-based tool for build automation and project management (in software development). It is centered around a Project Object Model (POM) described in a XML file that describes the project structure and its dependencies to other components and libraries.
TBD
Why Meson instead of Gradle
Gradle is build automation evolved. Gradle can automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else.
Gradle combines the power and flexibility of Ant with the dependency management and conventions of Maven into a more effective way to build. Powered by a Groovy DSL and packed with innovation, Gradle provides a declarative way to describe all kinds of builds through sensible defaults. Gradle is quickly becoming the build system of choice for many open source projects, leading edge enterprises and legacy automation challenges.
TBD