CMAKE_REQUIRE_FIND_PACKAGE_
Новое в версии 3.22.
Переменная для принудительного выполнения вызова find_package() REQUIRED.
Каждый вызов find_package() в проекте, который не является REQUIRED, может быть преобразован в 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.29/variable/CMAKE_REQUIRE_FIND_PACKAGE_PackageName.html