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 随时间推移添加的许多功能。它会忽略可以传递给 FetchContent_Declare() 但无法告知上述项目代码的 SYSTEM 和 EXCLUDE_FROM_ALL 等选项。它也不支持 依赖提供者。项目应调用 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 版本中被移除。