CMP0127

在版本 3.22 中新增。

cmake_dependent_option() 支援完整的 條件語法

The <depends> 參數接受以 分號分隔的清單 作為條件。CMake 3.21 及更低版本將每個 condition 評估為 if(${condition}),這無法正確處理具有巢狀括號群組的條件。CMake 3.22 及更高版本則傾向將每個 condition 評估為 if(<condition>),其中 <condition> 會被重新解析,如同直接寫在 if() 的呼叫中。這允許像這樣的表達式

"A AND (B OR C)"

但需要像這樣的表達式

"FOO MATCHES (UPPER|lower)"

重寫為

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

策略 CMP0127 為尚未更新以預期新行為的專案提供相容性。

此策略在 CMake 版本 3.22 中引入。它可以透過 cmake_policy()cmake_minimum_required() 進行設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

策略的 OLD 行為依 定義已被棄用,並可能在 CMake 的未來版本中移除。