Spec-Zone.ru › CMake 3.15

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]
  [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. Команда автоматически проверит, был ли найден файл конфигурации пакета.

FAIL_MESSAGE <custom-failure-message>

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

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

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 это сообщение не будет выводиться снова.

Пример для полного варианта:

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.15/module/FindPackageHandleStandardArgs.html

Spec-Zone.ru

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