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 及更高版本始终使用 FetchContent_Declare() 的 NEW 行为,而忽略策略设置。正式来说,这种强制 FetchContent_Declare() 使用 NEW 行为的规定将在未来的 CMake 版本中继续适用。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。