CMP0127 — CMake 4.3.0 Documentation

# CMP0127

Added in version 3.22.

`cmake_dependent_option()` supports full Condition Syntax.

The `<condition>` parameter accepts a semicolon-separated list of conditions. CMake 3.21 and lower evaluates each `condition` as `if(${condition})`, which does not properly handle conditions with nested paren groups. CMake 3.22 and above instead prefer to evaluate each `condition` as `if(<condition>)`, where `<condition>` is re-parsed as if literally written in a call to `if()`. This allows expressions like:

    "A AND (B OR C)"

but requires expressions like:

    "FOO MATCHES (UPPER|lower)"

to be re-written as:

    "FOO MATCHES \"(UPPER|lower)\""

Policy `CMP0127` provides compatibility for projects that have not been updated to expect the new behavior.

This policy was introduced in CMake version 3.22. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake warns, and uses `OLD` behavior.

Note

The `OLD` behavior of a policy is deprecated by definition and may be removed in a future version of CMake.