aboutsummaryrefslogtreecommitdiffstats
path: root/meson/docs/markdown/Comparisons.md
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/docs/markdown/Comparisons.md
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/docs/markdown/Comparisons.md')
-rw-r--r--meson/docs/markdown/Comparisons.md78
1 files changed, 78 insertions, 0 deletions
diff --git a/meson/docs/markdown/Comparisons.md b/meson/docs/markdown/Comparisons.md
new file mode 100644
index 000000000..1deef6979
--- /dev/null
+++ b/meson/docs/markdown/Comparisons.md
@@ -0,0 +1,78 @@
+---
+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.