The Meson Build System
http://mesonbuild.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
5.6 KiB
297 lines
5.6 KiB
4 years ago
|
# Command-line commands
|
||
|
|
||
|
There are two different ways of invoking Meson. First, you can run it directly
|
||
|
from the source tree with the command `/path/to/source/meson.py`. Meson may
|
||
|
also be installed in which case the command is simply `meson`. In this manual
|
||
|
we only use the latter format for simplicity.
|
||
|
|
||
|
Meson is invoked using the following syntax:
|
||
|
`meson [COMMAND] [COMMAND_OPTIONS]`
|
||
|
|
||
|
This section describes all available commands and some of their Optional arguments.
|
||
|
The most common workflow is to run [`setup`](#setup), followed by [`compile`](#compile), and then [`install`](#install).
|
||
|
|
||
|
For the full list of all available options for a specific command use the following syntax:
|
||
|
`meson COMMAND --help`
|
||
|
|
||
|
### configure
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['configure']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Changes options of a configured meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['configure']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
Most arguments are the same as in [`setup`](#setup).
|
||
|
|
||
|
Note: reconfiguring project will not reset options to their default values (even if they were changed in `meson.build`).
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
List all available options:
|
||
|
```
|
||
|
meson configure builddir
|
||
|
```
|
||
|
|
||
|
Change value of a single option:
|
||
|
```
|
||
|
meson configure builddir -Doption=new_value
|
||
|
```
|
||
|
|
||
|
### compile
|
||
|
|
||
|
*(since 0.54.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['compile']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Builds a default or a specified target of a configured meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['compile']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
`--verbose` argument is available since 0.55.0.
|
||
|
|
||
|
#### Targets
|
||
|
|
||
|
*(since 0.55.0)*
|
||
|
|
||
|
`TARGET` has the following syntax `[PATH/]NAME[:TYPE]`, where:
|
||
|
- `NAME`: name of the target from `meson.build` (e.g. `foo` from `executable('foo', ...)`).
|
||
|
- `PATH`: path to the target relative to the root `meson.build` file. Note: relative path for a target specified in the root `meson.build` is `./`.
|
||
|
- `TYPE`: type of the target. Can be one of the following: 'executable', 'static_library', 'shared_library', 'shared_module', 'custom', 'run', 'jar'.
|
||
|
|
||
|
`PATH` and/or `TYPE` can be ommited if the resulting `TARGET` can be used to uniquely identify the target in `meson.build`.
|
||
|
|
||
|
#### Backend specific arguments
|
||
|
|
||
|
*(since 0.55.0)*
|
||
|
|
||
|
`BACKEND-args` use the following syntax:
|
||
|
|
||
|
If you only pass a single string, then it is considered to have all values separated by commas. Thus invoking the following command:
|
||
|
|
||
|
```
|
||
|
$ meson compile --ninja-args=-n,-d,explain
|
||
|
```
|
||
|
|
||
|
would add `-n`, `-d` and `explain` arguments to ninja invocation.
|
||
|
|
||
|
If you need to have commas or spaces in your string values, then you need to pass the value with proper shell quoting like this:
|
||
|
|
||
|
```
|
||
|
$ meson compile "--ninja-args=['a,b', 'c d']"
|
||
|
```
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Build the project:
|
||
|
```
|
||
|
meson compile -C builddir
|
||
|
```
|
||
|
|
||
|
Execute a dry run on ninja backend with additional debug info:
|
||
|
```
|
||
|
meson compile --ninja-args=-n,-d,explain
|
||
|
```
|
||
|
|
||
|
Build three targets: two targets that have the same `foo` name, but different type, and a `bar` target:
|
||
|
```
|
||
|
meson compile foo:shared_library foo:static_library bar
|
||
|
```
|
||
|
|
||
|
Produce a coverage html report (if available):
|
||
|
```
|
||
|
meson compile coverage-html
|
||
|
```
|
||
|
|
||
|
### dist
|
||
|
|
||
|
*(since 0.52.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['dist']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Generates a release archive from the current source tree.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['dist']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [notes about creating releases](Creating-releases.md) for more info.
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Create a release archive:
|
||
|
```
|
||
|
meson dist -C builddir
|
||
|
```
|
||
|
|
||
|
### init
|
||
|
|
||
|
*(since 0.45.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['init']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Creates a basic set of build files based on a template.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['init']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Create a project in `sourcedir`:
|
||
|
```
|
||
|
meson init -C sourcedir
|
||
|
```
|
||
|
|
||
|
### introspect
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['introspect']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Displays information about a configured meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['introspect']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Display basic information about a configured project in `builddir`:
|
||
|
```
|
||
|
meson introspect builddir
|
||
|
```
|
||
|
|
||
|
### install
|
||
|
|
||
|
*(since 0.47.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['install']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Installs the project to the prefix specified in [`setup`](#setup).
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['install']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [the installation documentation](Installing.md) for more info.
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Install project to `prefix`:
|
||
|
```
|
||
|
meson install -C builddir
|
||
|
```
|
||
|
|
||
|
Install project to `$DESTDIR/prefix`:
|
||
|
```
|
||
|
DESTDIR=/path/to/staging/area meson install -C builddir
|
||
|
```
|
||
|
|
||
|
### rewrite
|
||
|
|
||
|
*(since 0.50.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['rewrite']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Modifies the meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['rewrite']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [the meson file rewriter documentation](Rewriter.md) for more info.
|
||
|
|
||
|
### setup
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['setup']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Configures a build directory for the meson project.
|
||
|
|
||
|
This is the default meson command (invoked if there was no COMMAND supplied).
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['setup']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [meson introduction page](Running-Meson.md#configuring-the-build-directory) for more info.
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Configures `builddir` with default values:
|
||
|
```
|
||
|
meson setup builddir
|
||
|
```
|
||
|
|
||
|
### subprojects
|
||
|
|
||
|
*(since 0.49.0)*
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['subprojects']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Manages subprojects of the meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['subprojects']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
### test
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['test']['usage'] }}
|
||
|
```
|
||
|
|
||
|
Run tests for the configure meson project.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['test']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [the unit test documentation](Unit-tests.md) for more info.
|
||
|
|
||
|
#### Examples:
|
||
|
|
||
|
Run tests for the project:
|
||
|
```
|
||
|
meson test -C builddir
|
||
|
```
|
||
|
|
||
|
Run only `specific_test_1` and `specific_test_2`:
|
||
|
```
|
||
|
meson test -C builddir specific_test_1 specific_test_2
|
||
|
```
|
||
|
|
||
|
### wrap
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['wrap']['usage'] }}
|
||
|
```
|
||
|
|
||
|
An utility to manage WrapDB dependencies.
|
||
|
|
||
|
```
|
||
|
{{ cmd_help['wrap']['arguments'] }}
|
||
|
```
|
||
|
|
||
|
See [the WrapDB tool documentation](Using-wraptool.md) for more info.
|