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