blob: 66d6e8f1dd043bf5a41201619323c7d7b391875b [file] [log] [blame]
name: run_target
returns: run_tgt
description: |
This function creates a new top-level target that runs a specified
command with the specified arguments. Like all top-level targets, this
integrates with the selected backend. For instance, you can run it as
`meson compile target_name`. Note that a run target produces no output
as far as Meson is concerned. It is only meant for tasks such as
running a code formatter or flashing an external device's firmware
with a built file.
The command is run from an *unspecified* directory, and Meson will set
three environment variables `MESON_SOURCE_ROOT`, `MESON_BUILD_ROOT`
and `MESON_SUBDIR` that specify the source directory, build directory
and subdirectory the target was defined in, respectively.
*Since 0.57.0* The template strings passed to `command` keyword arguments accept
the following special substitutions:
- `@SOURCE_ROOT@`: the path to the root of the source tree. Depending on the backend,
this may be an absolute or a relative to current workdir path.
- `@BUILD_ROOT@`: the path to the root of the build tree. Depending on the backend,
this may be an absolute or a relative to current workdir path.
- `@CURRENT_SOURCE_DIR@` *Since 0.57.1*: this is the directory where the currently
processed meson.build is located in. Depending on the backend,
this may be an absolute or a relative to current workdir path.
posargs:
target_name:
type: str
description: The name of the run target
kwargs:
command:
type: list[exe| external_program | custom_tgt | file | str]
description: |
A list containing the command to run and the arguments
to pass to it. Each list item may be a string or a target. For
instance, passing the return value of [[executable]]
as the first item will run that executable, or passing a string as
the first item will find that command in `PATH` and run it.
depends:
type: list[build_tgt | custom_tgt]
description: |
A list of targets that this target depends on but which
are not listed in the command array (because, for example, the
script does file globbing internally)
env:
since: 0.57.0
type: env | list[str] | dict[str]
description: |
environment variables to set, such as
`{'NAME1': 'value1', 'NAME2': 'value2'}` or `['NAME1=value1', 'NAME2=value2']`,
or an [[@env]] object which allows more sophisticated environment juggling.