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.