CMP0169

在版本 3.30 中新增。

呼叫帶有單一參數(宣告的依賴項名稱)的 FetchContent_Populate() 已棄用。

在引入 FetchContent_MakeAvailable() 之前,專案使用以下模式填充先前宣告的內容(使用 FetchContent_Declare()):

FetchContent_GetProperties(depname)
if(NOT depname_POPULATED)
  FetchContent_Populate(depname)
  add_subdirectory(${depname_SOURCE_DIR} ${depname_BINARY_DIR})
endif()

上述模式不支援隨時間推移添加到 FetchContent 的許多功能。它忽略了諸如 SYSTEMEXCLUDE_FROM_ALL 之類的選項,這些選項可以提供給 FetchContent_Declare(),但無法告知上述專案程式碼。它也不支援依賴提供者。專案應呼叫 FetchContent_MakeAvailable() 而不是使用上述模式。

CMake 3.30 及更高版本傾向於拒絕使用宣告的依賴項名稱呼叫 FetchContent_Populate()。此策略為尚未更新為呼叫 FetchContent_MakeAvailable() 的專案提供相容性。

此策略的 OLD 行為允許使用宣告的依賴項名稱呼叫 FetchContent_Populate()NEW 行為在這種情況下會因嚴重錯誤而停止。

注意

使用完整填充詳細資訊作為命令參數而不是僅僅依賴項名稱來呼叫 FetchContent_Populate() 仍然完全受支援。只有使用單一參數(先前宣告的依賴項名稱)呼叫 FetchContent_Populate() 的形式在此策略中已棄用。

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

注意

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