name: generator returns: generator description: | See also: [[custom_target]] This function creates a [[@generator]] object that can be used to run custom compilation commands. The only positional argument is the executable to use. It can either be a self-built executable or one returned by find_program. The template strings passed to all the keyword arguments accept the following special substitutions: - `@PLAINNAME@`: the complete input file name, e.g: `foo.c` becomes `foo.c` (unchanged) - `@BASENAME@`: the base of the input filename, e.g.: `foo.c.y` becomes `foo.c` (extension is removed) Each string passed to the `output` keyword argument *must* be constructed using one or both of these two substitutions. In addition to the above substitutions, the `arguments` keyword argument also accepts the following: - `@OUTPUT@`: the full path to the output file - `@INPUT@`: the full path to the input file - `@DEPFILE@`: the full path to the depfile - `@SOURCE_DIR@`: the full path to the root of the source tree - `@CURRENT_SOURCE_DIR@`: this is the directory where the currently processed meson.build is located in - `@BUILD_DIR@`: the full path to the root of the build dir where the output will be placed NOTE: Generators should only be used for outputs that will ***only*** be used as inputs for a [[build_target]] or a [[custom_target]]. When you use the processed output of a generator in multiple targets, the generator will be run multiple times to create outputs for each target. Each output will be created in a target-private directory `@BUILD_DIR@`. If you want to generate files for general purposes such as for generating headers to be used by several sources, or data that will be installed, and so on, use a [[custom_target]] instead. posargs: exe: type: exe | external_program description: Executable for the command to run kwargs: arguments: type: list[str] description: A list of template strings that will be the command line arguments passed to the executable. depends: # Not sure why this is not just `target` type: list[build_tgt | custom_tgt | custom_idx] since: 0.51.0 description: | An array of build targets that must be built before this generator can be run. This is used if you have a generator that calls a second executable that is built in this project (custom_idx was not available between 0.60 and 1.4.0). depfile: type: str description: | A template string pointing to a dependency file that a generator can write listing all the additional files this target depends on, for example a C compiler would list all the header files it included, and a change in any one of these files triggers a recompilation, output: type: list[str] description: | Template string (or list of template strings) defining how an output file name is (or multiple output names are) generated from a single source file name. capture: type: bool default: false since: 0.43.0 description: | When this argument is set to true, Meson captures `stdout` of the `executable` and writes it to the target file specified as `output`.