CMP0170¶
3.30 版本新增。
当 FETCHCONTENT_FULLY_DISCONNECTED
被设置为 true 时,FetchContent_MakeAvailable()
和 FetchContent_Populate()
会强制要求其源目录必须已经填充。此要求一直都有文档说明,但在 CMake 3.29 或更早版本中并未进行检查或强制执行。当项目期望某个依赖项已填充但其填充被静默跳过时,这有时会导致难以追踪的错误。
CMake 3.30 及更高版本倾向于检查和强制执行此约束。此策略为用户无法轻易阻止 FETCHCONTENT_FULLY_DISCONNECTED
被不当设置为 true 的情况提供了兼容性。
此策略的 OLD
行为允许 FETCHCONTENT_FULLY_DISCONNECTED
被设置为 true,即使依赖项的源目录尚未填充。如果 FETCHCONTENT_FULLY_DISCONNECTED
被设置为 true 且依赖项填充将被跳过,但该依赖项的源目录不存在,则 NEW
行为将以致命错误停止。
此策略在 CMake 版本 3.30 中引入。它可以由 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告并使用 OLD
行为。
注意
策略的 OLD
行为 按定义已被弃用
,并可能在未来的 CMake 版本中被移除。