CMP0097¶
3.16 版新增。
ExternalProject_Add()
使用 GIT_SUBMODULES ""
时不初始化任何子模块。
这些命令提供了一个 GIT_SUBMODULES
选项,该选项控制初始化和更新哪些子模块。从 CMake 3.16 开始,将 GIT_SUBMODULES
显式设置为空字符串意味着不初始化或更新任何子模块。
此策略为尚未更新以适应新行为的项目提供了兼容性。
此策略的 OLD
行为是,当 GIT_SUBMODULES
设置为空字符串时,会初始化和更新所有 git 子模块。此策略的 NEW
行为是,当 GIT_SUBMODULES
设置为空字符串时,不初始化或更新任何 git 子模块。
此策略在 CMake 版本 3.16 中引入。它可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake **不会** 警告,并使用 OLD
行为。
注意
此策略也适用于 FetchContent_Declare()
,它使用与 ExternalProject_Add()
相同的下载和更新功能。但是,由于策略首次引入时就存在的实现缺陷,CMake 3.16 及更高版本始终使用 NEW
行为用于 FetchContent_Declare()
,而不管策略设置如何。正式来说,此强制 NEW
行为用于 FetchContent_Declare()
将在未来的 CMake 版本中继续适用。
注意
策略的 OLD
行为是 按定义弃用
,并且可能会在未来的 CMake 版本中删除。