CMP0097 — CMake 3.28.3 Documentation

# CMP0097

New in version 3.16.

`ExternalProject_Add()` with `GIT_SUBMODULES ""` initializes no submodules. The policy also applies to `FetchContent_Declare()`, which uses the same download and update features as `ExternalProject_Add()`.

The commands provide a `GIT_SUBMODULES` option which controls what submodules to initialize and update. Starting with CMake 3.16, explicitly setting `GIT_SUBMODULES` to an empty string means no submodules will be initialized or updated.

This policy provides compatibility for projects that have not been updated to expect the new behavior.

The `OLD` behavior for this policy is for `GIT_SUBMODULES` when set to an empty string to initialize and update all git submodules. The `NEW` behavior for this policy is for `GIT_SUBMODULES` when set to an empty string to initialize and update no git submodules.

This policy was introduced in CMake version 3.16. Use the `cmake_policy()` command to set it to `OLD` or `NEW` explicitly. Unlike most policies, CMake version 3.28.3 does not warn when this policy is not set and simply uses `OLD` behavior.