CMakeDependentOption¶
Macro to provide an option dependent on other options.
This macro presents an option to the user only if a set of other conditions are true.
- cmake_dependent_option¶
cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>)
Makes
<option>
available to the user if the semicolon-separated list of conditions in<depends>
are all true. Otherwise, a local variable named<option>
is set to<force>
.When
<option>
is available, the given<help_text>
and initial<value>
are used. Otherwise, any value set by the user is preserved for when<depends>
is satisfied in the future.Note that the
<option>
variable only has a value which satisfies the<depends>
condition within the scope of the caller because it is a local variable.
Added in version 3.22: Full Condition Syntax is now supported. See policy CMP0127
.
Examples¶
Semicolon-separated list of conditions:
cmake_dependent_option(USE_FOO "Use Foo" ON "USE_BAR;NOT USE_ZOT" OFF)
If USE_BAR
is true and USE_ZOT
is false, this provides an option called
USE_FOO
that defaults to ON. Otherwise, it sets USE_FOO
to OFF and
hides the option from the user. If the status of USE_BAR
or USE_ZOT
ever changes, any value for the USE_FOO
option is saved so that when the
option is re-enabled it retains its old value.
Full condition syntax:
cmake_dependent_option(USE_FOO "Use Foo" ON "USE_A AND (USE_B OR USE_C)" OFF)
Similar to the previous example, if the argument with full condition syntax
evaluates to true, this provides an option called USE_FOO
that defaults to
ON. Otherwise, it sets USE_FOO
to OFF and hides the option from the user in
the GUI. When condition changes, option is saved in similar way as described
above. This enables using entire condition syntax as being the if
clause
argument, such as grouping conditions with parens and similar.