![]() Disabling targets because the tools used to build them aren't available is a pretty suspicious thing to do. Users who want this are probably, in general, advised to check themselves whether it is possible to build those targets with find_program(..., required: false) The i18n.gettext() invocation is a bit unusual because the product of running it is non-critical files, specifically, translation catalogs. If users don't have the tools needed to build them, they may not be able to use them either, because perhaps they have NLS disabled on their platform or it's difficult to put it in the bootstrap path. So, for this reason, it was made non-fatal and the message catalogs are just not created, and the resulting build is still perfectly usable *unless* you want to use it in another language, at which point it "works" but the text is all inscrutable to the end user, and that's a feature of the target platform. That's an acceptable tradeoff for translation catalogs. It is NOT an acceptable tradeoff for merge_file, which produces desktop files or MIME database catalogs or other files which have crucial roles to perform, without which the software in question simply doesn't work at all. In such cases, this just fails to install crucial files, users report bugs to the project in question, and the project adds `find_program('xgettext')` to guarantee the hard error due to lack of confidence in Meson. Fixes #6165 Fixes #8436 |
||
---|---|---|
.github | ||
ci | ||
cross | ||
data | ||
docs | ||
graphics | ||
man | ||
manual tests | ||
mesonbuild | ||
packaging | ||
test cases | ||
tools | ||
unittests | ||
.editorconfig | ||
.flake8 | ||
.gitattributes | ||
.gitignore | ||
.lgtm.yml | ||
.mailmap | ||
.mypy.ini | ||
.pylintrc | ||
CODEOWNERS | ||
COPYING | ||
MANIFEST.in | ||
README.md | ||
azure-pipelines.yml | ||
contributing.md | ||
meson.py | ||
pyproject.toml | ||
run_cross_test.py | ||
run_format_tests.py | ||
run_meson_command_tests.py | ||
run_mypy.py | ||
run_project_tests.py | ||
run_single_test.py | ||
run_tests.py | ||
run_unittests.py | ||
setup.cfg | ||
setup.py | ||
sider.yml | ||
skip_ci.py |
README.md
Status
Dependencies
Installing from source
Meson is available on PyPi, so
it can be installed with pip3 install meson
. The exact command to
type to install with pip
can vary between systems, be sure to use
the Python 3 version of pip
.
If you wish you can install it locally with the standard Python command:
python3 -m pip install meson
For builds using Ninja, Ninja can be downloaded directly from Ninja GitHub release page or via PyPi
python3 -m pip install ninja
More on Installing Meson build can be found at the getting meson page.
Creating a standalone script
Meson can be run as a Python zip app. To generate the executable run the following command:
./packaging/create_zipapp.py --outfile meson.pyz --interpreter '/usr/bin/env python3' <source checkout>
Running
Meson requires that you have a source directory and a build directory
and that these two are different. In your source root must exist a
file called meson.build
. To generate the build system run this
command:
meson setup <source directory> <build directory>
Depending on how you obtained Meson the command might also be called
meson.py
instead of plain meson
. In the rest of this document we
are going to use the latter form.
You can omit either of the two directories, and Meson will substitute the current directory and autodetect what you mean. This allows you to do things like this:
cd <source root>
meson setup builddir
To compile, cd into your build directory and type ninja
. To run unit
tests, type ninja test
.
More on running Meson build system commands can be found at the
running meson page
or by typing meson --help
.
Contributing
We love code contributions. See the contribution page on the website for details.
IRC
The channel to use is #mesonbuild
either via Matrix (web
interface) or OFTC IRC.
Further info
More information about the Meson build system can be found at the project's home page.
Meson is a registered trademark of Jussi Pakkanen.