# 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.

Example invocation:

    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.

Added in version 3.22: Full Condition Syntax is now supported. See policy `CMP0127`.