CMakeDependentOption

提供依赖于其他选项的选项的宏。

此宏仅在满足一组其他条件时才向用户显示一个选项。

cmake_dependent_option
cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>)

如果 <depends> 中以分号分隔的条件列表全部为真,则使 <option> 对用户可用。否则,名为 <option> 的局部变量将被设置为 <force>

<option> 可用时,将使用给定的 <help_text> 和初始 <value>。否则,用户设置的任何值都将被保留,以便将来在满足 <depends> 条件时使用。

请注意,<option> 变量仅在调用者的作用域内具有满足 <depends> 条件的值,因为它是一个局部变量。

版本 3.22 新增: 现在支持完整的 条件语法。请参阅策略 CMP0127

示例

以分号分隔的条件列表

cmake_dependent_option(USE_FOO "Use Foo" ON "USE_BAR;NOT USE_ZOT" OFF)

如果 USE_BAR 为真且 USE_ZOT 为假,则提供一个名为 USE_FOO 的选项,其默认值为 ON。否则,它会将 USE_FOO 设置为 OFF 并从用户界面隐藏该选项。如果 USE_BARUSE_ZOT 的状态发生变化,则会保存 USE_FOO 选项的任何值,以便在重新启用该选项时,它会保留其旧值。

完整的条件语法

cmake_dependent_option(USE_FOO "Use Foo" ON "USE_A AND (USE_B OR USE_C)" OFF)

与前面的示例类似,如果使用完整条件语法的参数评估为真,则提供一个名为 USE_FOO 的选项,其默认值为 ON。否则,它会将 USE_FOO 设置为 OFF 并在 GUI 中从用户界面隐藏该选项。当条件更改时,选项会以与上述类似的方式保存。这使得可以使用完整的条件语法作为 if 子句参数,例如使用括号和类似方式对条件进行分组。