Add documentation for per-subproject options.

optionrefactor2
Jussi Pakkanen 4 months ago
parent 0fe1254910
commit 9d5594c6ea
  1. 37
      docs/markdown/Configuring-a-build-directory.md
  2. 19
      docs/markdown/snippets/optionrefactor.md

@ -119,3 +119,40 @@ by invoking [`meson configure`](Commands.md#configure) with the
project source directory or the path to the root `meson.build`. In project source directory or the path to the root `meson.build`. In
this case, Meson will print the default values of all options similar this case, Meson will print the default values of all options similar
to the example output from above. to the example output from above.
## Per project subproject options rewrite (Since 1.7)
A common requirement when building large projects with many
subprojects is to build some (or all) subprojects with project options
that are different from the "main project". This has been sort of
possible in a limited way but is now possible in a general way. These
additions can be added, changed and removed at runtime using the
command line or, in other words, without editing existing
`meson.build` files.
Starting with version 1.7 you can specify per-project option settings.
These can be specified for every top level (i.e. not project) options.
Suppose you have a project that has a single subproject called
`numbercruncher` that does heavy computation. During development you
want to build that subproject with optimizations enabled but your main
project without optimizations. This can be done by specifying an
augment to the given subproject:
meson configure -Dnumbercruncher:optimization=3
Another case might be that you want to build with errors as warnings,
but some subproject does not support it. It would be set up like this:
meson configure -Dwerror=true -Anaughty:werror=false
You can also specify an augment on the top level project. A more
general version of enabling optimizations on all subprojects but not
the top project would be done like this:
meson configure -Doptimization=2 -D:optimization=0
Note the colon after the second `D`.
Subproject specific values can be removed with -U
meson configure -Usubproject:optionnname

@ -0,0 +1,19 @@
## Per project subproject options rewrite
You can now define per-subproject values for all shared configuration
options. As an example you might want to enable optimizations on only
one subproject:
meson configure -Dnumbercruncher:optimization=3
Subproject specific values can be removed with -U
meson configure -Unumbercruncher:optimization
This is a major change in how options are handled. Current
per-subproject options are converted to augments on the fly. It is
expected that the logic might be changed in the next few releases as
logic errors are discovered.
We have tried to keep backwards compatibility as much as possible, but
this may lead to some build breakage.
Loading…
Cancel
Save