# 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 `<depends>` is true. When `<option>` is available, the given `<help_text>` and initial `<value>` are used. If the `<depends>` condition is not true, `<option>` will not be presented and will always have the value given by `<force>`. Any value set by the user is preserved for when the option is presented again. In case `<depends>` is a semicolon-separated list, all elements must be true in order to initialize `<option>` with `<value>`.

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.

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