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
的許多功能。它會忽略像 SYSTEM
和 EXCLUDE_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 版本中移除。