Spec-Zone.ru › CMake 3.30

CMAKE_REQUIRE_FIND_PACKAGE_

Новое в версии 3.22.

Переменная для выполнения вызова find_package() REQUIRED.

Каждый не-REQUIRED вызов find_package() в проекте можно превратить в REQUIRED путём установки переменной CMAKE_REQUIRE_FIND_PACKAGE_<PackageName> в значение TRUE. Это позволяет подтвердить предположения о среде построения и гарантировать, что сборка завершится ошибкой, если эти предположения не выполняются.

Обратите внимание, что установка этой переменной в значение true нарушает некоторые часто используемые шаблоны. Несколько вызовов find_package() иногда используются для получения другого порядка поиска, отличного от стандартного. Например, проекты могут принудительно проверить известный путь к определённому пакету перед поиском по другим стандартным путям поиска:

find_package(something PATHS /some/local/path NO_DEFAULT_PATH)
find_package(something)

В примере первый вызов ищет пакет something в определённом каталоге. Если CMAKE_REQUIRE_FIND_PACKAGE_something установлено в true, то этот первый вызов должен завершиться успешно; в противном случае возникает ошибка.

Второй вызов больше не получает возможности обеспечить резервное использование стандартных путей поиска.

Аналогичный шаблон используется даже некоторыми собственными модулями поиска CMake для поиска пакета конфигурации в первую очередь:

find_package(something CONFIG QUIET)
if(NOT something_FOUND)
  # Fall back to searching using typical Find module logic...
endif()

Опять же, если CMAKE_REQUIRE_FIND_PACKAGE_something имеет значение true, первый вызов должен завершиться успешно. Это фактически означает, что пакет конфигурации должен быть найден для зависимости, и логика модуля поиска никогда не используется.

См. также переменную CMAKE_DISABLE_FIND_PACKAGE_<PackageName>.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName.html

Spec-Zone.ru

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