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