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