Spec-Zone.ru › CMake

CMP0169

Добавлено в версии 3.30.

Вызов FetchContent_Populate() с одним аргументом (именем объявленной зависимости) считается устаревшим.

До появления FetchContent_MakeAvailable() проекты заполняли содержимое ранее объявленных зависимостей (с помощью FetchContent_Declare()) следующим образом:

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

Приведённый выше шаблон не поддерживает ряд функций, которые со временем были добавлены в FetchContent. Он игнорирует такие параметры, как SYSTEM и EXCLUDE_FROM_ALL, которые можно передать в FetchContent_Declare(), но нельзя сделать доступными для приведённого выше кода проекта. Кроме того, он не поддерживает поставщиков зависимостей. Вместо использования приведённого выше шаблона проектам следует вызывать FetchContent_MakeAvailable().

CMake 3.30 и более поздние версии предпочитают отклонять вызовы FetchContent_Populate() с именем объявленной зависимости. Эта политика обеспечивает совместимость с проектами, которые ещё не обновили для вызова FetchContent_MakeAvailable().

Поведение OLD этой политики позволяет вызывать FetchContent_Populate() с именем объявленной зависимости. Поведение NEW в таких случаях приводит к фатальной ошибке.

Примечание

Вызов FetchContent_Populate() с полными сведениями для заполнения в качестве аргументов команды, а не только с именем зависимости, по-прежнему полностью поддерживается. Эта политика считает устаревшей только форму вызова FetchContent_Populate() с одним аргументом (именем ранее объявленной зависимости).

Эта политика появилась в версии CMake 3.30. Её можно задать с помощью cmake_policy() или cmake_minimum_required(). Если она не задана, CMake выдаёт предупреждение и использует поведение OLD.

Примечание

Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0169.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API