Spec-Zone.ru › CMake 3.29

FindPackageHandleStandardArgs

Этот модуль предоставляет функции, предназначенные для использования в Модулях поиска, реализующих вызовы find_package(<PackageName>).

find_package_handle_standard_args

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

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

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_VERSION_RANGE]
  [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>

Устарело начиная с версии 3.3.

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

REQUIRED_VARS <required-var>...

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

Изменено в версии 3.18: Если HANDLE_COMPONENTS указан, эта опция может быть опущена.

VERSION_VAR <version-var>

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

HANDLE_VERSION_RANGE

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

Включает обработку диапазона версий, если он задан. Без этой опции, если указан диапазон версий, будет отображено предупреждение разработчику.

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>

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

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

FAIL_MESSAGE <custom-failure-message>

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

NAME_MISMATCHED

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

Указывает, что <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 генерирует соответствующее сообщение об успехе/ошибке.

find_package_check_version

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

Вспомогательная функция, которая может использоваться для проверки, соответствует ли <version> аргументам, связанным с версиями, в find_package().

find_package_check_version(<version> <result-var>
  [HANDLE_VERSION_RANGE]
  [RESULT_MESSAGE_VARIABLE <message-var>]
  )

Переменная <result-var> будет содержать булево значение, представляющее результат проверки.

Опции:

HANDLE_VERSION_RANGE

Включает обработку диапазона версий, если он задан. Без этой опции, если указан диапазон версий, будет отображено предупреждение разработчику.

RESULT_MESSAGE_VARIABLE <message-var>

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

Пример использования:

find_package_check_version(1.2.3 result HANDLE_VERSION_RANGE
  RESULT_MESSAGE_VARIABLE reason)
if (result)
  message (STATUS "${reason}")
else()
  message (FATAL_ERROR "${reason}")
endif()

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

Spec-Zone.ru

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