Spec-Zone.ru › CMake 3.17

FindPackageHandleStandardArgs

Этот модуль предоставляет функцию, предназначенную для использования в Поиске модулей при реализации вызовов find_package(<PackageName>). Он обрабатывает REQUIRED, QUIET и аргументы, связанные с версиями, для find_package. Также он устанавливает переменную <PackageName>_FOUND. Пакет считается найденным, если все перечисленные переменные содержат корректные результаты, например, корректные пути к файлам.

find_package_handle_standard_args

Существует две сигнатуры:

find_package_handle_standard_args(<PackageName>
  (DEFAULT_MSG|<custom-failure-message>)
  <required-var>...
  )

find_package_handle_standard_args(<PackageName>
  [FOUND_VAR <result-var>]
  [REQUIRED_VARS <required-var>...]
  [VERSION_VAR <version-var>]
  [HANDLE_COMPONENTS]
  [CONFIG_MODE]
  [NAME_MISMATCHED]
  [REASON_FAILURE_MESSAGE <reason-failure-message>]
  [FAIL_MESSAGE <custom-failure-message>]
  )

Переменная <PackageName>_FOUND будет установлена в значение TRUE, если все переменные <required-var>... являются корректными и выполняются любые дополнительные ограничения, и в значение FALSE в противном случае. Сообщение об успехе или ошибке может быть отображено в зависимости от результатов и от того, был ли задан параметр REQUIRED и/или QUIET для вызова find_package().

Параметры:

(DEFAULT_MSG|<custom-failure-message>)

В простой сигнатуре это определяет сообщение об ошибке. Используйте DEFAULT_MSG , чтобы запросить вычисление стандартного сообщения (рекомендуется). Недействительно в полной сигнатуре.

FOUND_VAR <result-var>

Устарело. Определяет либо <PackageName>_FOUND , либо <PACKAGENAME>_FOUND в качестве переменной результата. Существует только для совместимости со старыми версиями CMake и теперь игнорируется. Переменные результатов с обоих именами всегда устанавливаются для совместимости.

REQUIRED_VARS <required-var>...

Укажите переменные, необходимые для данного пакета. Эти имена могут быть указаны в генерируемом сообщении об ошибке, спрашивающем пользователя о значениях отсутствующих переменных. Поэтому их обычно следует задавать как записи кэша, например, FOO_LIBRARY, а не переменные вывода, такие как FOO_LIBRARIES.

VERSION_VAR <version-var>

Укажите имя переменной, которая содержит версию найденного пакета. Эта версия будет проверена на соответствие (возможно) указанной требуемой версии, заданной в вызове find_package(), включая его параметр EXACT. В стандартных сообщениях содержится информация о требуемой версии и фактически найденной версии, как если версия соответствует или нет.

HANDLE_COMPONENTS

Включить обработку компонентов пакета. В этом случае команда сообщит, какие компоненты найдены, а какие отсутствуют, и переменная <PackageName>_FOUND будет установлена в значение FALSE , если отсутствует любой из необходимых компонентов (т. е. не те, которые перечислены после параметра OPTIONAL_COMPONENTS вызова find_package()).

CONFIG_MODE

Укажите, что вызывающий модуль поиска является оболочкой для вызова find_package(<PackageName> NO_MODULE). Это подразумевает значение VERSION_VAR в <PackageName>_VERSION. Команда автоматически проверит, был ли найден файл конфигурации пакета.

REASON_FAILURE_MESSAGE <reason-failure-message>

Укажите пользовательское сообщение о причине ошибки, которое будет добавлено к стандартному сгенерированному сообщению.

FAIL_MESSAGE <custom-failure-message>

Укажите пользовательское сообщение об ошибке вместо использования стандартного сгенерированного сообщения. Не рекомендуется.

NAME_MISMATCHED

Укажите, что <PackageName> не соответствует ${CMAKE_FIND_PACKAGE_NAME}. Это обычно ошибка и вызывает предупреждение, но может быть намеренным для использования команды для компонентов более крупного пакета.

Пример для простой сигнатуры:

find_package_handle_standard_args(LibXml2 DEFAULT_MSG
  LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR)

Пакет LibXml2 считается найденным, если LIBXML2_LIBRARY и LIBXML2_INCLUDE_DIR являются корректными. Тогда также LibXml2_FOUND устанавливается в значение TRUE. Если он не найден, и REQUIRED был использован, произойдет ошибка с message(FATAL_ERROR), независимо от того, был ли использован QUIET или нет. Если он найден, будет сообщено об успехе, включая содержание первого <required-var>. При повторных запусках CMake это сообщение не будет выводиться снова.

Примечание

Если <PackageName> не соответствует CMAKE_FIND_PACKAGE_NAME для вызывающего модуля, выдаётся предупреждение о несоответствии. Переменная FPHSA_NAME_MISMATCHED может быть установлена для отключения предупреждения при использовании старой сигнатуры и аргумента NAME_MISMATCHED с новой сигнатурой. Чтобы избежать необходимости заставлять вызывающего программиста требовать более новых версий CMake для использования, значение переменной будет использоваться, если оно определено, когда параметр NAME_MISMATCHED не передаётся для новой сигнатуры (но использование обоих является ошибкой).

Пример для полной сигнатуры:

find_package_handle_standard_args(LibArchive
  REQUIRED_VARS LibArchive_LIBRARY LibArchive_INCLUDE_DIR
  VERSION_VAR LibArchive_VERSION)

В этом случае пакет LibArchive считается найденным, если LibArchive_LIBRARY и LibArchive_INCLUDE_DIR являются корректными. Также версия LibArchive будет проверена с помощью версии, содержащейся в LibArchive_VERSION. Поскольку не задан FAIL_MESSAGE, будут отображены стандартные сообщения.

Другой пример для полной сигнатуры:

find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4)
find_package_handle_standard_args(Automoc4  CONFIG_MODE)

В этом случае модуль FindAutmoc4.cmake оборачивает вызов find_package(Automoc4 NO_MODULE) и добавляет дополнительный каталог поиска для automoc4. Затем вызов find_package_handle_standard_args генерирует корректное сообщение об успехе/ошибке.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.17/module/FindPackageHandleStandardArgs.html

Spec-Zone.ru

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