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