CMP0097 — CMake 3.29.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. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake does not warn, and uses `OLD` behavior.

Note

The `OLD` behavior of a policy is `deprecated by definition` and may be removed in a future version of CMake.