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. Этот параметр обязателен, еслиHANDLE_COMPONENTSне указан. -
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.18/module/FindPackageHandleStandardArgs.html