find_package
- Основные параметры и режим модуля
- Полные параметры и режим конфигурации
- Выбор версии
- Процедура поиска
- Переменные интерфейса файла пакета
Найти внешний проект и загрузить его настройки.
Основные параметры и режим модуля
find_package(<PackageName> [version] [EXACT] [QUIET] [MODULE]
[REQUIRED] [[COMPONENTS] [components...]]
[OPTIONAL_COMPONENTS components...]
[NO_POLICY_SCOPE])
Находит и загружает настройки из внешнего проекта. <PackageName>_FOUND будет установлено, чтобы указать, был ли найден пакет. Когда пакет найден, пакетная информация предоставляется через переменные и импортированные цели, документированные самим пакетом. Опция QUIET отключает информационные сообщения, включая те, которые указывают, что пакет не найден, если он не REQUIRED. Опция REQUIRED останавливает обработку с сообщением об ошибке, если пакет не найден.
Указанный пакетом список необходимых компонентов может быть перечислен после опции COMPONENTS (или после опции REQUIRED, если она присутствует). Дополнительные необязательные компоненты могут быть перечислены после OPTIONAL_COMPONENTS. Доступные компоненты и их влияние на то, считается ли пакет найденным, определяются целевым пакетом.
Аргумент [version] запрашивает версию, с которой должен быть совместим найденный пакет. Он может быть указан в двух формах:
- Одна версия в формате
major[.minor[.patch[.tweak]]]. - Диапазон версий в формате
versionMin...[<]versionMax, гдеversionMinиversionMaxимеют тот же формат, что и одна версия. По умолчанию оба конечных значения включаются. Указав<, верхнее конечное значение будет исключено. Диапазоны версий поддерживаются только с CMake 3.19 и более поздними версиями.
Опция EXACT запрашивает, чтобы версия совпадала точно. Эта опция несовместима с указанием диапазона версий.
Если ни [version], ни список компонентов не заданы для рекурсивного вызова внутри find-модуля, соответствующие аргументы автоматически передаются из внешнего вызова (включая флаг EXACT для [version]). Поддержка версий в настоящее время предоставляется только на основе пакета (см. раздел Выбор версии ниже). Если указан диапазон версий, но пакет разработан только для ожидания одной версии, пакет проигнорирует верхнюю границу диапазона и учтёт только одну версию в нижней границе диапазона.
См. документацию команды cmake_policy() для обсуждения опции NO_POLICY_SCOPE.
Команда имеет два режима поиска пакетов: режим «Модуль» и режим «Конфигурация». Вышеприведенная подпись выбирает режим «Модуль». Если модуль не найден, команда переходит к режиму «Конфигурация», описанному ниже. Этот переход отключается, если указана опция MODULE.
В режиме «Модуль» CMake ищет файл с именем Find<PackageName>.cmake. Файл сначала ищется в CMAKE_MODULE_PATH, а затем среди модулей поиска, предоставляемых установкой CMake. Если файл найден, он считывается и обрабатывается CMake. Он отвечает за поиск пакета, проверку версии и выведение необходимых сообщений. Некоторые find-модули предоставляют ограниченную или никакую поддержку версий; проверьте документацию модуля.
Если опция MODULE не указана в вышеприведенной подписи, CMake сначала ищет пакет в режиме «Модуль». Затем, если пакет не найден, он снова ищет его в режиме «Конфигурация». Пользователь может установить переменную CMAKE_FIND_PACKAGE_PREFER_CONFIG в TRUE, чтобы направить CMake сначала выполнить поиск в режиме «Конфигурация», прежде чем перейти к режиму «Модуль».
Полные параметры и режим конфигурации
Пользовательский код обычно должен искать пакеты с использованием вышеупомянутой основной подписи. Остальная часть документации по этой команде описывает полную подпись команды и детали процесса поиска. Разработчики проектов, желающие предоставить пакет для поиска с помощью этой команды, должны прочитать дальше.
Полная подпись команды в режиме «Конфигурация»
find_package(<PackageName> [version] [EXACT] [QUIET]
[REQUIRED] [[COMPONENTS] [components...]]
[OPTIONAL_COMPONENTS components...]
[CONFIG|NO_MODULE]
[NO_POLICY_SCOPE]
[NAMES name1 [name2 ...]]
[CONFIGS config1 [config2 ...]]
[HINTS path1 [path2 ... ]]
[PATHS path1 [path2 ... ]]
[PATH_SUFFIXES suffix1 [suffix2 ...]]
[NO_DEFAULT_PATH]
[NO_PACKAGE_ROOT_PATH]
[NO_CMAKE_PATH]
[NO_CMAKE_ENVIRONMENT_PATH]
[NO_SYSTEM_ENVIRONMENT_PATH]
[NO_CMAKE_PACKAGE_REGISTRY]
[NO_CMAKE_BUILDS_PATH] # Deprecated; does nothing.
[NO_CMAKE_SYSTEM_PATH]
[NO_CMAKE_SYSTEM_PACKAGE_REGISTRY]
[CMAKE_FIND_ROOT_PATH_BOTH |
ONLY_CMAKE_FIND_ROOT_PATH |
NO_CMAKE_FIND_ROOT_PATH])
Опция CONFIG, синонимичная опция NO_MODULE, или использование опций, не указанных в основной подписи, принудительно используют режим «Конфигурация». В чистом режиме «Конфигурация» команда пропускает поиск в режиме «Модуль» и сразу переходит к поиску в режиме «Конфигурация».
Поиск в режиме «Конфигурация» пытается найти файл конфигурации, предоставленный искомым пакетом. В кеше создается запись под названием <PackageName>_DIR, которая будет содержать каталог, содержащий файл. По умолчанию команда ищет пакет с именем <PackageName>. Если указана опция NAMES, вместо <PackageName> используются имена, следующие за ней. Команда ищет файл с именем <PackageName>Config.cmake или <lower-case-package-name>-config.cmake для каждого указанного имени. Заменить набор возможных имён файлов конфигурации можно с помощью опции CONFIGS. Процедура поиска указана ниже. После того, как он найден, файл конфигурации считывается и обрабатывается CMake. Поскольку файл предоставлен пакетом, он уже знает местоположение содержимого пакета. Полный путь к файлу конфигурации хранится в переменной cmake <PackageName>_CONFIG.
Все файлы конфигурации, которые были рассмотрены CMake при поиске установки пакета с подходящей версией, хранятся в переменной cmake <PackageName>_CONSIDERED_CONFIGS, а связанные версии — в <PackageName>_CONSIDERED_VERSIONS.
Если файл конфигурации пакета не найден, CMake сгенерирует сообщение об ошибке, за исключением случая, когда указан аргумент QUIET. Если REQUIRED указан и пакет не найден, генерируется фатальная ошибка, и шаг конфигурации останавливается. Если <PackageName>_DIR была установлена в каталог, не содержащий файл конфигурации, CMake проигнорирует его и начнёт поиск с нуля.
Разработчики пакетов, предоставляющие файлы конфигурации пакета CMake, должны называть и устанавливать их таким образом, чтобы процедура поиска Процедура поиска, описанная ниже, могла найти их без использования дополнительных опций.
Выбор версии
Когда указан аргумент [version], режим «Конфигурация» будет искать только версию пакета, которая утверждает совместимость с запрошенной версией (см. формат спецификации). Если указана опция EXACT, может быть найдена только версия пакета, утверждающая точное соответствие запрошенной версии. CMake не устанавливает никакой конвенции для значения версий. Версии пакетов проверяются файлами «version», предоставляемыми самими пакетами. Для кандидатного файла конфигурации пакета <config-file>.cmake соответствующий файл версии расположен рядом с ним и назван либо <config-file>-version.cmake, либо <config-file>Version.cmake. Если такой файл версии недоступен, то предполагается, что файл конфигурации несовместим с какой-либо запрошенной версией. Базовый файл версии, содержащий код соответствия версии, можно создать, используя модуль CMakePackageConfigHelpers. Когда файл версии найден, он загружается для проверки запрошенного номера версии. Файл версии загружается в вложенном пространстве имён, в котором определены следующие переменные:
-
PACKAGE_FIND_NAME -
<PackageName> -
PACKAGE_FIND_VERSION -
Полная строка запрошенной версии
-
PACKAGE_FIND_VERSION_MAJOR -
Основная версия, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MINOR -
Дополнительная версия, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_PATCH -
Вспомогательная версия, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_TWEAK -
Версия корректировки, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_COUNT -
Количество компонентов версии, от 0 до 4
Когда указан диапазон версий, переменные версии выше будут содержать значения, основанные на нижней границе диапазона версий. Это сохраняет совместимость с пакетами, которые не были реализованы для ожидания диапазонов версий. Кроме того, диапазон версий будет описан следующими переменными:
-
PACKAGE_FIND_VERSION_RANGE -
Полная строка диапазона запрошенных версий
-
PACKAGE_FIND_VERSION_RANGE_MIN -
Определяет, следует ли включать или исключать нижнюю границу диапазона версий. В настоящее время единственное поддерживаемое значение для этой переменной —
INCLUDE. -
PACKAGE_FIND_VERSION_RANGE_MAX -
Определяет, следует ли включать или исключать верхнюю границу диапазона версий. Поддерживаемые значения для этой переменной —
INCLUDEиEXCLUDE. -
PACKAGE_FIND_VERSION_MIN -
Полная строка запрошенной версии нижней границы диапазона
-
PACKAGE_FIND_VERSION_MIN_MAJOR -
Главная версия нижней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MIN_MINOR -
Дополнительная версия нижней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MIN_PATCH -
Версия исправления нижней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MIN_TWEAK -
Версия доработки нижней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MIN_COUNT -
Количество компонентов версии нижней границы диапазона, от 0 до 4
-
PACKAGE_FIND_VERSION_MAX -
Полная строка запрошенной версии верхней границы диапазона
-
PACKAGE_FIND_VERSION_MAX_MAJOR -
Главная версия верхней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MAX_MINOR -
Дополнительная версия верхней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MAX_PATCH -
Версия исправления верхней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MAX_TWEAK -
Версия доработки верхней границы диапазона, если запрошена, иначе 0
-
PACKAGE_FIND_VERSION_MAX_COUNT -
Количество компонентов версии верхней границы диапазона, от 0 до 4
Независимо от того, задана ли одна версия или диапазон версий, переменная PACKAGE_FIND_VERSION_COMPLETE будет определена и содержать полную запрошенную строку версии.
Файл версии проверяет, удовлетворяет ли он запрошенной версии, и задаёт следующие переменные:
-
PACKAGE_VERSION -
Полная предоставленная строка версии
-
PACKAGE_VERSION_EXACT -
Истина, если версия является точной совпадающей
-
PACKAGE_VERSION_COMPATIBLE -
Истина, если версия совместима
-
PACKAGE_VERSION_UNSUITABLE -
Истина, если не подходит как любая версия
Эти переменные проверяются командой find_package для определения, предоставляет ли файл конфигурации приемлемую версию. Они недоступны после возвращения вызова find_package. Если версия приемлема, задаются следующие переменные:
-
<PackageName>_VERSION -
Полная предоставленная строка версии
-
<PackageName>_VERSION_MAJOR -
Главная версия, если предоставлена, иначе 0
-
<PackageName>_VERSION_MINOR -
Дополнительная версия, если предоставлена, иначе 0
-
<PackageName>_VERSION_PATCH -
Версия исправления, если предоставлена, иначе 0
-
<PackageName>_VERSION_TWEAK -
Версия доработки, если предоставлена, иначе 0
-
<PackageName>_VERSION_COUNT -
Количество компонентов версии, от 0 до 4
и загружается соответствующий файл конфигурации пакета. Когда несколько файлов конфигурации пакетов доступны, и их файлы версии заявляют о совместимости с запрошенной версией, неявно, какой из них выбирается: если переменная CMAKE_FIND_PACKAGE_SORT_ORDER не задана, попытка выбора наиболее высокой или близкой версии не предпринимается.
Для управления порядком, в котором find_package проверяет совместимость, используются две переменные CMAKE_FIND_PACKAGE_SORT_ORDER и CMAKE_FIND_PACKAGE_SORT_DIRECTION. Например, для выбора самой высокой версии можно задать
SET(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL) SET(CMAKE_FIND_PACKAGE_SORT_DIRECTION DEC)
перед вызовом find_package.
Процедура поиска
CMake строит набор возможных префиксов установки для пакета. Под каждым префиксом ищутся несколько каталогов для файла конфигурации. Таблицы ниже показывают ищущие каталоги. Каждая запись предназначена для деревьев установки, следующих соглашениям Windows (W), UNIX (U) или Apple (A):
<prefix>/ (W) <prefix>/(cmake|CMake)/ (W) <prefix>/<name>*/ (W) <prefix>/<name>*/(cmake|CMake)/ (W) <prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/ (U) <prefix>/(lib/<arch>|lib*|share)/<name>*/ (U) <prefix>/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (U) <prefix>/<name>*/(lib/<arch>|lib*|share)/cmake/<name>*/ (W/U) <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/ (W/U) <prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (W/U)
На системах, поддерживающих macOS, ищутся следующие каталоги для фреймворков или пакетов приложений, содержащих файл конфигурации:
<prefix>/<name>.framework/Resources/ (A) <prefix>/<name>.framework/Resources/CMake/ (A) <prefix>/<name>.framework/Versions/*/Resources/ (A) <prefix>/<name>.framework/Versions/*/Resources/CMake/ (A) <prefix>/<name>.app/Contents/Resources/ (A) <prefix>/<name>.app/Contents/Resources/CMake/ (A)
Во всех случаях <name> рассматривается как регистронезависимое и соответствует любому из указанных имён (<PackageName> или имена, заданные NAMES).
Пути с lib/<arch> активируются, если переменная CMAKE_LIBRARY_ARCHITECTURE установлена. lib* включает одно или несколько значений lib64, lib32, libx32 или lib (ищутся в указанном порядке).
- Пути с
lib64ищутся на 64-битных платформах, если свойствоFIND_LIBRARY_USE_LIB64_PATHSустановлено вTRUE. - Пути с
lib32ищутся на 32-битных платформах, если свойствоFIND_LIBRARY_USE_LIB32_PATHSустановлено вTRUE. - Пути с
libx32ищутся на платформах, использующих ABI x32, если свойствоFIND_LIBRARY_USE_LIBX32_PATHSустановлено вTRUE. - Путь
libвсегда ищется.
Если PATH_SUFFIXES указано, суффиксы добавляются к каждой (W) или (U) записи каталога по одному.
Этот набор каталогов предназначен для работы с проектами, предоставляющими файлы конфигурации в своих деревьях установки. Каталоги выше, помеченные (W) предназначены для установок на Windows, где префикс может указывать на верхнюю часть каталога установки приложения. Помеченные (U) предназначены для установок на платформах UNIX, где префикс общий для нескольких пакетов. Это всего лишь соглашение, поэтому все каталоги (W) и (U) по-прежнему ищутся на всех платформах. Каталоги, помеченные (A) предназначены для установок на платформах Apple. Переменные CMAKE_FIND_FRAMEWORK и CMAKE_FIND_APPBUNDLE определяют порядок предпочтения.
Набор префиксов установки формируется следующим образом. Если NO_DEFAULT_PATH задано, все варианты NO_* активированы.
-
Новое в версии 3.12: Пути поиска, указанные в переменной CMake
<PackageName>_ROOTи переменной среды<PackageName>_ROOT, где<PackageName>— это пакет, который нужно найти. Переменные корневого каталога пакета поддерживаются как стек, поэтому, если вызывается модуль поиска, пути корневого каталога из родительского модуля поиска также будут проверяться после путей текущего пакета. Это можно пропустить, если передано значениеNO_PACKAGE_ROOT_PATHили установив переменнуюCMAKE_FIND_USE_PACKAGE_ROOT_PATHв значениеFALSE. См. политикуCMP0074. -
Пути поиска, указанные в переменных кэша, специфичных для CMake. Они предназначены для использования в командной строке с
-DVAR=value. Значения интерпретируются как списки, разделённые точкой с запятой. Это можно пропустить, если передано значениеNO_CMAKE_PATHили установив переменнуюCMAKE_FIND_USE_CMAKE_PATHв значениеFALSE: -
Пути поиска, указанные в переменных среды, специфичных для CMake. Они предназначены для установки в конфигурации оболочки пользователя и поэтому используют системный разделитель путей (
;в Windows и:в UNIX). Это можно пропустить, если передано значениеNO_CMAKE_ENVIRONMENT_PATHили установив переменнуюCMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATHв значениеFALSE:<PackageName>_DIRCMAKE_PREFIX_PATHCMAKE_FRAMEWORK_PATHCMAKE_APPBUNDLE_PATH
- Пути поиска, указанные параметром
HINTS. Обычно это пути, вычисленные путём интроспекции системы, такие как подсказки, полученные из местоположения другого уже найденного элемента. Зашитые значения должны быть указаны с помощью параметраPATHS. -
Поиск в стандартных системных переменных среды. Это можно пропустить, если передано значение
NO_SYSTEM_ENVIRONMENT_PATHили установив переменнуюCMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATHв значениеFALSE. Элементы пути, оканчивающиеся на/binили/sbin, автоматически преобразуются в их родительские каталоги:PATH
-
Поиск путей, хранящихся в реестре пакетов CMake Пользовательского реестра пакетов. Это можно пропустить, если передано значение
NO_CMAKE_PACKAGE_REGISTRYили установив переменнуюCMAKE_FIND_USE_PACKAGE_REGISTRYв значениеFALSEили устаревшую переменнуюCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRYв значениеTRUE.См. руководство
cmake-packages(7)для получения подробной информации о пользовательском реестре пакетов. -
Поиск переменных CMake, определённых в файлах платформы для текущей системы. Это можно пропустить, если передано значение
NO_CMAKE_SYSTEM_PATHили установив переменнуюCMAKE_FIND_USE_CMAKE_SYSTEM_PATHв значениеFALSE:Пути платформы, содержащиеся в этих переменных, представляют собой расположения, которые обычно включают установленное программное обеспечение. Например,
/usr/localдля платформ на основе UNIX. -
Поиск путей, хранящихся в реестре пакетов CMake Системного реестра пакетов. Это можно пропустить, если передано значение
NO_CMAKE_SYSTEM_PACKAGE_REGISTRYили установив переменнуюCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRYв значениеFALSEили устаревшую переменнуюCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRYв значениеTRUE.См. руководство
cmake-packages(7)для получения подробной информации о системном реестре пакетов. - Поиск путей, указанных параметром
PATHS. Обычно это жёстко заданные значения.
Новое в версии 3.16: Добавлены переменные CMAKE_FIND_USE_<CATEGORY>_PATH для глобального отключения различных расположений поиска.
Переменная CMake CMAKE_FIND_ROOT_PATH указывает один или несколько каталогов, которые должны быть добавлены перед всеми другими каталогами поиска. Это эффективно "перезадаёт корень" всего поиска в указанных расположениях. Пути, являющиеся потомками переменной CMAKE_STAGING_PREFIX, исключаются из этого изменения корня, так как эта переменная всегда является путём в системе хоста. По умолчанию CMAKE_FIND_ROOT_PATH пуста.
Переменная CMAKE_SYSROOT также может быть использована для указания ровно одного каталога, используемого в качестве префикса. Установка CMAKE_SYSROOT также имеет и другие эффекты. См. документацию по этой переменной для получения дополнительной информации.
Эти переменные особенно полезны при кросс-компиляции для указания корневого каталога целевой среды, и CMake также будет искать там. По умолчанию сначала проверяются каталоги, перечисленные в CMAKE_FIND_ROOT_PATH, затем каталог CMAKE_SYSROOT, а затем каталоги без корня. Поведение по умолчанию можно изменить, установив CMAKE_FIND_ROOT_PATH_MODE_PACKAGE. Это поведение можно переопределить вручную в каждом вызове, используя параметры:
-
CMAKE_FIND_ROOT_PATH_BOTH -
Поиск в указанном выше порядке.
-
NO_CMAKE_FIND_ROOT_PATH -
Не использовать переменную
CMAKE_FIND_ROOT_PATH. -
ONLY_CMAKE_FIND_ROOT_PATH -
Искать только в переопределённых каталогах и каталогах ниже
CMAKE_STAGING_PREFIX.
По умолчанию порядок поиска предназначен для наиболее конкретных и наименее конкретных случаев в общем использовании. Проекты могут переопределить порядок, просто вызвав команду несколько раз и используя опции NO_*.
find_package (<PackageName> PATHS paths... NO_DEFAULT_PATH) find_package (<PackageName>)
Как только один из вызовов выполнится успешно, переменная результата будет установлена и сохранена в кэше, так что ни один вызов не будет искать снова.
По умолчанию значение, хранящееся в переменной результата, будет путём, в котором найден файл. Переменная CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS может быть установлена в значение TRUE перед вызовом find_package для разрешения символических ссылок и сохранения реального пути к файлу.
Каждый вызов find_package, не являющийся REQUIRED, может быть отключён, установив переменную CMAKE_DISABLE_FIND_PACKAGE_<PackageName> в значение TRUE.
Переменные интерфейса файла пакета
При загрузке файла конфигурации модуля или пакета find_package определяет переменные, предоставляющие информацию об аргументах вызова (и восстанавливает их исходное состояние перед возвратом):
-
CMAKE_FIND_PACKAGE_NAME -
Искомый
<PackageName> -
<PackageName>_FIND_REQUIRED -
Истинно, если была указана опция
REQUIRED -
<PackageName>_FIND_QUIETLY -
Истинно, если была указана опция
QUIET -
<PackageName>_FIND_VERSION -
Полная строка запрошенной версии
-
<PackageName>_FIND_VERSION_MAJOR -
Главная версия, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MINOR -
Второстепенная версия, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_PATCH -
Дополнительная версия, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_TWEAK -
Версия доработки, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_COUNT -
Количество компонентов версии, от 0 до 4
-
<PackageName>_FIND_VERSION_EXACT -
Истинно, если была указана опция
EXACT -
<PackageName>_FIND_COMPONENTS -
Список запрошенных компонентов
-
<PackageName>_FIND_REQUIRED_<c> -
Истинно, если компонент
<c>обязателен, ложно, если компонент<c>необязателен
Когда задан диапазон версий, переменные версии выше будут содержать значения, основанные на нижней границе диапазона версий. Это делается для сохранения совместимости с пакетами, которые не были реализованы для ожидания диапазонов версий. Кроме того, диапазон версий будет описан следующими переменными:
-
<PackageName>_FIND_VERSION_RANGE -
Полная строка запрошенного диапазона версий
-
<PackageName>_FIND_VERSION_RANGE_MIN -
Указывает, включена или исключена нижняя граница диапазона версии. В настоящее время
INCLUDE- единственное поддерживаемое значение. -
<PackageName>_FIND_VERSION_RANGE_MAX -
Указывает, включена или исключена верхняя граница диапазона версий. Возможные значения для этой переменной -
INCLUDEилиEXCLUDE. -
<PackageName>_FIND_VERSION_MIN -
Полная строка запрошенной версии нижней границы диапазона
-
<PackageName>_FIND_VERSION_MIN_MAJOR -
Главная версия нижней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MIN_MINOR -
Второстепенная версия нижней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MIN_PATCH -
Дополнительная версия нижней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MIN_TWEAK -
Версия доработки нижней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MIN_COUNT -
Количество компонентов версии нижней границы, от 0 до 4
-
<PackageName>_FIND_VERSION_MAX -
Полная строка запрошенной версии верхней границы диапазона
-
<PackageName>_FIND_VERSION_MAX_MAJOR -
Главная версия верхней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MAX_MINOR -
Второстепенная версия верхней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MAX_PATCH -
Дополнительная версия верхней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MAX_TWEAK -
Версия доработки верхней границы диапазона, если запрошена, иначе 0
-
<PackageName>_FIND_VERSION_MAX_COUNT -
Количество компонентов версии верхней границы, от 0 до 4
Независимо от того, указана ли одиночная версия или диапазон версий, переменная <PackageName>_FIND_VERSION_COMPLETE будет определена и будет содержать полную запрошенную строку версии, как указано.
В режиме модуля загруженный модуль поиска обязан выполнить запрос, подробно описанный в этих переменных; см. модуль поиска для получения подробностей. В режиме конфигурации find_package автоматически обрабатывает опции REQUIRED, QUIET, и [version], но оставляет за файлом конфигурации пакета обработку компонентов таким образом, который имеет смысл для пакета. Файл конфигурации пакета может установить <PackageName>_FOUND в ложь, чтобы сообщить find_package, что требования к компонентам не выполнены.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/command/find_package.html