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