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