CMP0127

在 3.22 版本中新增。

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

<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 中移除。