New in version 3.22.

cmake_dependent_option() supports full Condition Syntax.

The <depends> 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:


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. CMake version 3.28.6 warns when the policy is not set and uses OLD behavior. Use the cmake_policy() command to set it to OLD or NEW explicitly.


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