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 子句的參數,例如使用括號和類似方式對條件進行分組。