|
|
|
---
|
|
|
|
title: Comparisons
|
|
|
|
...
|
|
|
|
|
|
|
|
# Comparing Meson with other build systems
|
|
|
|
|
|
|
|
A common question is *Why should I choose Meson over a different build
|
|
|
|
system X?* There is no one true answer to this as it depends on the
|
|
|
|
use case. Almost all build systems have all the functionality needed
|
|
|
|
to build medium-to-large projects so the decision is usually made on
|
|
|
|
other points. Here we list some pros and cons of various build systems
|
|
|
|
to help you do the decision yourself.
|
|
|
|
|
|
|
|
## GNU Autotools
|
|
|
|
|
|
|
|
### Pros
|
|
|
|
|
|
|
|
Excellent support for legacy Unix platforms, large selection of
|
|
|
|
existing modules.
|
|
|
|
|
|
|
|
### Cons
|
|
|
|
|
|
|
|
Needlessly slow, complicated, hard to use correctly, unreliable,
|
|
|
|
painful to debug, incomprehensible for most people, poor support for
|
|
|
|
non-Unix platforms (especially Windows).
|
|
|
|
|
|
|
|
## CMake
|
|
|
|
|
|
|
|
### Pros
|
|
|
|
|
|
|
|
Great support for multiple backends (Visual Studio, XCode, etc).
|
|
|
|
|
|
|
|
### Cons
|
|
|
|
|
|
|
|
The scripting language is cumbersome to work with. Some simple things
|
|
|
|
are more complicated than necessary.
|
|
|
|
|
|
|
|
## SCons
|
|
|
|
|
|
|
|
### Pros
|
|
|
|
|
|
|
|
Full power of Python available for defining your build.
|
|
|
|
|
|
|
|
### Cons
|
|
|
|
|
|
|
|
Slow. Requires you to pass your configuration settings on every
|
|
|
|
invocation. That is, if you do `scons OPT1 OPT2` and then just
|
|
|
|
`scons`, it will reconfigure everything without settings `OPT1` and
|
|
|
|
`OPT2`. Every other build system remembers build options from the
|
|
|
|
previous invocation.
|
|
|
|
|
|
|
|
## Bazel
|
|
|
|
|
|
|
|
# Pros
|
|
|
|
|
|
|
|
Proven to scale to very large projects.
|
|
|
|
|
|
|
|
## Cons
|
|
|
|
|
|
|
|
Implemented in Java. Poor Windows support. Heavily focused on Google's
|
|
|
|
way of doing things (which may be a good or a bad thing). Contributing
|
|
|
|
code requires [signing a CLA](https://bazel.build/contributing.html).
|
|
|
|
|
|
|
|
## Meson
|
|
|
|
|
|
|
|
### Pros
|
|
|
|
|
|
|
|
The fastest build system [see
|
|
|
|
measurements](Performance-comparison.md), user friendly, designed to
|
|
|
|
be as invisible to the developer as possible, native support for
|
|
|
|
modern tools (precompiled headers, coverage, Valgrind etc). Not Turing
|
|
|
|
complete so build definition files are easy to read and understand.
|
|
|
|
|
|
|
|
### Cons
|
|
|
|
|
|
|
|
Relatively new so it does not have a large user base yet, and may thus
|
|
|
|
contain some unknown bugs. Visual Studio and XCode backends not as
|
|
|
|
high quality as Ninja one.
|