CMP0102¶
添加於版本 3.17。
mark_as_advanced()
命令不再於尚未存在快取條目的情況下建立快取條目。
在 CMake 3.16 及更早版本中,如果變數完全未定義或僅在本地定義,則 mark_as_advanced()
命令會建立一個新的快取條目,其類型為 UNINITIALIZED
且沒有值。當 find_path()
(或其他類似的 find_
命令) 接著執行時,它會找到這個未定義的快取條目,並將其設定為空字串值。此過程最終會刪除本地變數 (由於快取的工作方式),從而有效地清除僅在本地範圍內可用的任何已儲存 find_
結果。
此策略的 OLD
行為是建立空的快取定義。此策略的 NEW
行為是忽略快取中尚不存在的變數。
此策略在 CMake 版本 3.17 中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 預設情況下不會發出警告,並使用 OLD
行為。
請參閱 CMAKE_POLICY_WARNING_CMP0102
變數的文件以控制警告。
注意
策略的 OLD
行為依定義已被棄用
,並可能在未來版本的 CMake 中移除。