cmake_pkg_config
Добавлена в версии 3.31.
Обработка файлов пакетов в формате pkg-config.
Синопсис
cmake_pkg_config(EXTRACT <package> [<version>] [...])
Введение
Эта команда генерирует переменные и цели CMake из файлов пакетов в формате pkg-config напрямую, без необходимости вызова или даже наличия реализации pkg-config. <package> — это либо абсолютный путь к файлу пакета, либо имя пакета, которое будет найдено с использованием стандартных шаблонов поиска pkg-config. Необязательная строка <version> имеет тот же формат и семантику, что и спецификатор версии в стиле pkg-config, за исключением того, что если оператор сравнения не указан, подразумевается =.
Существует несколько подписей для этой команды, и некоторые из параметров общие для них. Это:
-
EXACT / QUIET / REQUIRED -
Параметр
EXACTзапрашивает точное совпадение строки версии (включая пустую строку, если версия не указана), перезаписывая стандартный алгоритм сравнения версий pkg-config. Это проигнорирует любой оператор сравнения, присоединённый к строке версии.Параметр
QUIETотключает информационные сообщения, включая те, которые указывают, что пакет не найден, если он неREQUIRED. ПараметрREQUIREDостанавливает обработку с сообщением об ошибке, если пакет не найден. -
STRICTNESS <mode> -
Указывает, насколько строго содержимое файлов пакета будет проверяться во время разбора и разрешения. Некорректный файл в соответствии с указанным режимом строгости приведёт к завершению команды с ошибкой. Возможные режимы:
-
STRICT: Тесно соответствует поведению исходного FDO pkg-config. Переменные и ключевые слова должны быть уникальными. Переменные должны быть определены до использования. Ключевые слова Name, Description и Version должны быть присутствовать. Общая структура файла должна быть корректной и разборчивой. -
PERMISSIVE: Тесно соответствует поведению реализации pkgconf. Повторяющиеся переменные перезаписываются. Повторяющиеся ключевые слова добавляются. Неопределённые переменные разрешаются как пустые строки. Ключевые слова Name, Description и Version должны быть присутствовать. Общая структура файла должна быть корректной и разборчивой. -
BEST_EFFORT: Поведение аналогичноPERMISSIVE, в отношении дублирующих или неинициализированных переменных и ключевых слов, но не завершается с ошибкой ни при каких условиях. Файлы пакетов, требующие BEST_EFFORT, не пройдут валидацию в других основных реализациях и должны быть исправлены.
По умолчанию строгость —
PERMISSIVE. -
-
ENV_MODE -
Указывает, какие переменные среды будут запрошены при выполнении данной команды. Возможные режимы:
-
FDO: Запрашивает только исходный наборPKG_CONFIG_*переменных среды, используемых реализацией freedesktop.orgpkg-config. -
PKGCONF: Запрашивает более расширенный набор переменных среды, используемых реализациейpkgconf. -
IGNORE: Полностью игнорирует наличие, отсутствие и значение переменных среды. Во всех случаях, если переменная среды будет запрошена, она рассматривается как определённая, но со значением пустой строки для целей операции. Это не изменяет текущую среду. Для булевых переменных среды, таких какPKG_CONFIG_ALLOW_*, это означает, что они оцениваются как истинные.PKG_CONFIG_SYSROOT_PATHявляется незначительным исключением. Когда используетсяENV_MODE IGNORE, по умолчанию не происходит добавления корневого пути иpc_sysrootdirостаётся по умолчанию/.
Подкоманды генерации целей всегда игнорируют переменные среды, отфильтровывающие флаги. Режим среды по умолчанию —
PKGCONF. -
-
PC_LIBDIR <path>... Переопределяет стандартное местоположение для файлов пакетов; также используется для вывода переменной пакета
pc_path.Если этот параметр не задан, по умолчанию директория библиотек — это первый доступный из следующих значений:
CMAKE_PKG_CONFIG_PC_LIB_DIRS- Переменная среды
PKG_CONFIG_LIBDIR - Результат
pkg-config --variable pc_path pkg-config - Платформенно-зависимое значение по умолчанию
-
PC_PATH <path>... Переопределяет дополнительные каталоги файлов пакетов, которые будут добавлены в путь поиска; также используется для вывода переменной пакета
pc_path.Если этот параметр не задан, по умолчанию пути — это первый доступный из следующих значений:
CMAKE_PKG_CONFIG_PC_PATH- Переменная среды
PKG_CONFIG_PATH - Пустой список
-
DISABLE_UNINSTALLED <bool> Переопределяет поведение поиска файлов "неустановленных" пакетов. Это файлы пакетов с суффиксом "-uninstalled", описывающие пакеты, интегрированные напрямую из дерева сборки.
Обычно такие файлы пакетов имеют более высокий приоритет, чем "установленные" пакеты. Если
DISABLE_UNINSTALLEDравно true, поиск "неустановленных" пакетов отключён.Если этот параметр не задан, поведение поиска по умолчанию определяется первым доступным из следующих значений:
CMAKE_PKG_CONFIG_DISABLE_UNINSTALLED- Если переменная среды
PKG_CONFIG_DISABLE_UNINSTALLEDопределена, поиск отключён, в противном случае — включён.
-
PC_SYSROOT_DIR <path> Переопределяет корневой путь, который будет добавлен к путям, указанным флагами компиляции
-Iи расположениями поиска библиотек-L; также используется для вывода переменной пакетаpc_sysrootdir.Если этот параметр не задан, корневой путь по умолчанию предоставляется первым доступным из следующих значений:
CMAKE_PKG_CONFIG_SYSROOT_DIR- Переменная среды
PKG_CONFIG_SYSROOT_DIR - Если корневой путь недоступен, к путям include и library не будет добавлено ничего, и
pc_sysrootdirбудет установлено в/
-
TOP_BUILD_DIR <path> Переопределяет путь верхнего каталога сборки, используемый для вывода переменной пакета
pc_top_builddir.Если этот параметр не задан, путь верхнего каталога сборки по умолчанию — это первый доступный из следующих значений:
CMAKE_PKG_CONFIG_TOP_BUILD_DIR- Переменная среды
PKG_CONFIG_TOP_BUILD_DIR - Если путь верхнего каталога сборки недоступен, переменная пакета
pc_top_builddirне устанавливается
Подписи
-
cmake_pkg_config(EXTRACT <package> [<version>] [...]) -
Извлечь содержимое пакета в переменные.
cmake_pkg_config(EXTRACT <package> [<version>] [REQUIRED] [EXACT] [QUIET] [STRICTNESS <mode>] [ENV_MODE <mode>] [PC_LIBDIR <path>...] [PC_PATH <path>...] [DISABLE_UNINSTALLED <bool>] [PC_SYSROOT_DIR <path>] [TOP_BUILD_DIR <path>] [SYSTEM_INCLUDE_DIRS <path>...] [SYSTEM_LIBRARY_DIRS <path>...] [ALLOW_SYSTEM_INCLUDES <bool>] [ALLOW_SYSTEM_LIBS <bool>])
Следующие переменные будут заполнены из содержимого файла пакета:
Переменная | Тип | Определение |
|---|---|---|
| Строка | Значение ключевого слова |
| Строка | Значение ключевого слова |
| Строка | Значение ключевого слова |
| Список | Значение ключевого слова |
| Список | Значение ключевого слова |
| Список | Значение ключевого слова |
| Строка | Значение ключевого слова |
| Список | Все флаги с префиксом |
| Список | Все флаги без префикса |
| Строка | Значение ключевого слова |
| Список | Все флаги с префиксом |
| Список | Все флаги с префиксом |
| Список | Все флаги без префиксов |
| * |
|
-
SYSTEM_INCLUDE_DIRS -
Переопределяет каталоги "системы" для целей изменения флагов каталогов включения в
CMAKE_PKG_CONFIG_CFLAGSи производных переменных.Если этот параметр не указан, стандартные каталоги предоставляются первым доступным из следующих значений:
CMAKE_PKG_CONFIG_SYS_INCLUDE_DIRS- Переменная среды
PKG_CONFIG_SYSTEM_INCLUDE_PATH - Результат выполнения
pkgconf --variable pc_system_includedirs pkg-config - Платформенно-зависимое значение по умолчанию
Кроме того, когда
ENV_MODEимеет значениеPKGCONF, переменнаяCMAKE_PKG_CONFIG_PKGCONF_INCLUDESбудет добавленна в список, если доступна. Если она недоступна, будут запрошены и добавлены в список следующие переменные среды:CPATHC_INCLUDE_PATHCPLUS_INCLUDE_PATHOBJC_INCLUDE_PATH-
INCLUDE(только Windows)
-
SYSTEM_LIBRARY_DIRS -
Переопределяет каталоги "системы" для целей изменения флагов каталогов библиотек в
CMAKE_PKG_CONFIG_LIBSи производных переменных.Если этот параметр не указан, стандартные каталоги предоставляются первым доступным из следующих значений:
CMAKE_PKG_CONFIG_SYS_LIB_DIRS- Переменная среды
PKG_CONFIG_SYSTEM_LIBRARY_PATH - Результат выполнения
pkgconf --variable pc_system_libdirs pkg-config - Платформенно-зависимое значение по умолчанию
Кроме того, когда
ENV_MODEимеет значениеPKGCONF, переменнаяCMAKE_PKG_CONFIG_PKGCONF_LIB_DIRSбудет добавленна в список, если доступна. Если она недоступна, будет запрошена и добавленна переменная средыLIBRARY_PATH. -
ALLOW_SYSTEM_INCLUDES -
Сохраняет каталоги "системы" при изменении флагов каталогов включения в
CMAKE_PKG_CONFIG_CFLAGSи производных переменных.Если этот параметр не указан, значение по умолчанию определяется первым доступным из следующих значений:
CMAKE_PKG_CONFIG_ALLOW_SYS_INCLUDES- Если переменная среды
PKG_CONFIG_ALLOW_SYSTEM_CFLAGSопределена, флаги сохраняются, в противном случае они отфильтровываются при изменении флагов.
-
ALLOW_SYSTEM_LIBS -
Сохраняет каталоги "системы" при изменении флагов каталогов библиотек в
CMAKE_PKG_CONFIG_LIBSи производных переменных.Если этот параметр не указан, значение по умолчанию определяется первым доступным из следующих значений:
CMAKE_PKG_CONFIG_ALLOW_SYS_LIBS- Если переменная среды
PKG_CONFIG_ALLOW_SYSTEM_LIBSопределена, флаги сохраняются, в противном случае они отфильтровываются при изменении флагов.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/command/cmake_pkg_config.html