CMP0169ΒΆ

Added in version 3.30.

Calling FetchContent_Populate() with a single argument (the name of a declared dependency) is deprecated.

Prior to the introduction of FetchContent_MakeAvailable(), projects populated previously declared content (with FetchContent_Declare()) using the following pattern:

FetchContent_GetProperties(depname)
if(NOT depname_POPULATED)
  FetchContent_Populate(depname)
  add_subdirectory(${depname_SOURCE_DIR} ${depname_BINARY_DIR})
endif()

The above pattern does not support a number of features that have been added to FetchContent over time. It ignores options like SYSTEM and EXCLUDE_FROM_ALL which may be given to FetchContent_Declare(), but can't be made known to the above project code. It also does not support dependency providers. Projects should call FetchContent_MakeAvailable() instead of using the above pattern.

CMake 3.30 and above prefers to reject calls to FetchContent_Populate() with the name of a declared dependency. This policy provides compatibility for projects that have not been updated to call FetchContent_MakeAvailable() instead.

The OLD behavior of this policy allows FetchContent_Populate() to be called with the name of a declared dependency. The NEW behavior halts with a fatal error in such cases.

Note

Calling FetchContent_Populate() with the full population details as command arguments rather than just a dependency name remains fully supported. Only the form calling FetchContent_Populate() with a single argument (the name of a previously declared dependency) is deprecated with this policy.

This policy was introduced in CMake version 3.30. It may be set by cmake_policy() or cmake_minimum_required(). If it is not set, CMake warns, 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.