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 行为 定义 已弃用,将来版本中可能会删除它。