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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/module/FindPackageHandleStandardArgs.html