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