CMP0183

在版本 4.0 中新增。

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

<enabled> 參數接受以分號分隔的條件列表。 CMake 3.31 和更低版本將每個 condition 評估為 if(${condition}),這無法正確處理具有巢狀括號群組的條件。 CMake 4.0 及更高版本則傾向於將每個 condition 評估為 if(<condition>),其中 <condition> 會被重新解析,如同在呼叫 if() 時逐字寫入一樣。 這允許像這樣的表達式:

"A AND (B OR C)"

但需要像這樣的表達式:

"FOO MATCHES (UPPER|lower)"

重新寫成如下:

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

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

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

注意

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