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