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.
55 lines
1.7 KiB
55 lines
1.7 KiB
--- |
|
short-description: Targets to run external commands |
|
... |
|
|
|
# Run targets |
|
|
|
Sometimes you need to have a target that just runs an external |
|
command. As an example you might have a build target that reformats |
|
your source code, runs `cppcheck` or something similar. In Meson this |
|
is accomplished with a so called *run target*. |
|
|
|
The recommended way of doing this is writing the command(s) you want |
|
to run to a script file. Here's an example script. |
|
|
|
```bash |
|
#!/bin/sh |
|
|
|
cd "${MESON_SOURCE_ROOT}" |
|
inspector_command -o "${MESON_BUILD_ROOT}/inspection_result.txt" |
|
``` |
|
|
|
Note the two environment variables `MESON_SOURCE_ROOT` and |
|
`MESON_BUILD_ROOT`. These are absolute paths to your project's source |
|
and build directories and they are automatically set up by Meson. In |
|
addition to these Meson also sets up the variable `MESON_SUBDIR`, |
|
which points to the subdirectory where the run command was specified. |
|
Most commands don't need to set up this. |
|
|
|
Note how the script starts by cd'ing into the source dir. Meson does |
|
not guarantee that the script is run in any specific directory. |
|
Whether you need to do the same depends on what your custom target |
|
wants to do. |
|
|
|
To make this a run target we write it to a script file called |
|
`scripts/inspect.sh` and specify it in the top level Meson file like |
|
this. |
|
|
|
```meson |
|
run_target('inspector', |
|
command : 'scripts/inspect.sh') |
|
``` |
|
|
|
Run targets are not run by default. To run it run the following command. |
|
|
|
```console |
|
$ meson compile inspector |
|
``` |
|
|
|
All additional entries in `run_target`'s `command` array are passed |
|
unchanged to the inspector script, so you can do things like this: |
|
|
|
```meson |
|
run_target('inspector', |
|
command : ['scripts/inspect.sh', '--exclude', 'tests']) |
|
```
|
|
|