Spec-Zone.ru › CMake

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.org pkg-config.
  • PKGCONF: Запрашивает более расширенный набор переменных среды, используемых реализацией pkgconf.
  • IGNORE: Полностью игнорирует наличие, отсутствие и значения переменных среды. Во всех случаях, переменная среды, если она запрашивается, обрабатывается как определённая, но со значением пустой строки для целей операции. Это не изменяет текущую среду. Для булевых переменных среды, таких как PKG_CONFIG_ALLOW_*, это означает, что они оцениваются как истинно.

    PKG_CONFIG_SYSROOT_PATH — небольшое исключение. Когда используется ENV_MODE IGNORE, по умолчанию не происходит добавление корневого пути, а pc_sysrootdir остаётся по умолчанию /.

Подкоманды генерации целей всегда игнорируют переменные среды для фильтрации флагов. Режим среды по умолчанию — PKGCONF.

PC_LIBDIR <path>...

Переопределяет стандартное расположение поиска файлов пакетов; также используется для вывода переменной пакета pc_path.

Если эта опция не указана, стандартный каталог библиотек — первый доступный из следующих значений:

  1. CMAKE_PKG_CONFIG_PC_LIB_DIRS
  2. Переменная среды PKG_CONFIG_LIBDIR
  3. Результат выполнения pkg-config --variable pc_path pkg-config
  4. Платформозависимое значение по умолчанию
PC_PATH <path>...

Переопределяет дополнительные каталоги файлов пакетов, которые будут добавлены в начало пути поиска; также используется для вывода переменной пакета pc_path.

Если эта опция не указана, стандартные пути — первые доступные из следующих значений:

  1. CMAKE_PKG_CONFIG_PC_PATH
  2. Переменная среды PKG_CONFIG_PATH
  3. Пустой список
DISABLE_UNINSTALLED <bool>

Переопределяет поведение поиска файлов пакетов «неустановленных» пакетов. Это файлы пакетов с суффиксом «-uninstalled», которые описывают пакеты, интегрированные непосредственно из дерева сборки.

Обычно такие файлы пакетов имеют более высокий приоритет, чем «установленные» пакеты. Когда DISABLE_UNINSTALLED истинно, поиск «неустановленных» пакетов отключается.

Если эта опция не указана, стандартное поведение поиска определяется первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_DISABLE_UNINSTALLED
  2. Если переменная среды PKG_CONFIG_DISABLE_UNINSTALLED определена, поиск отключён, иначе включён.
PC_SYSROOT_DIR <path>

Переопределяет корневой путь, который будет добавлен в начало путей, указанных флагами компиляции -I и местами поиска библиотек -L; также используется для вывода переменной пакета pc_sysrootdir.

Если эта опция не указана, корневой путь по умолчанию предоставляется первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_SYSROOT_DIR
  2. Переменная среды PKG_CONFIG_SYSROOT_DIR
  3. Если корневой путь недоступен, в пути включения или каталоги библиотек ничего не добавляется, а pc_sysrootdir будет установлено в /
TOP_BUILD_DIR <path>

Переопределяет путь верхнего каталога сборки, используемый для вывода переменной пакета pc_top_builddir.

Если эта опция не указана, путь верхнего каталога сборки по умолчанию — первый доступный из следующих значений:

  1. CMAKE_PKG_CONFIG_TOP_BUILD_DIR
  2. Переменная среды PKG_CONFIG_TOP_BUILD_DIR
  3. Если путь верхнего каталога сборки недоступен, переменная пакета 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>])

Следующие переменные будут заполнены содержимым файла пакета:

Переменная

Тип

Определение

CMAKE_PKG_CONFIG_NAME

Строка

Значение ключевого слова Name

CMAKE_PKG_CONFIG_DESCRIPTION

Строка

Значение ключевого слова Description

CMAKE_PKG_CONFIG_VERSION

Строка

Значение ключевого слова Version

CMAKE_PKG_CONFIG_PROVIDES

Список

Значение ключевого слова Provides

CMAKE_PKG_CONFIG_REQUIRES

Список

Значение ключевого слова Requires

CMAKE_PKG_CONFIG_CONFLICTS

Список

Значение ключевого слова Conflicts

CMAKE_PKG_CONFIG_CFLAGS

Строка

Значение ключевого слова CFlags / Cflags

CMAKE_PKG_CONFIG_INCLUDES

Список

Все флаги с префиксом -I из CMAKE_PKG_CONFIG_CFLAGS

CMAKE_PKG_CONFIG_COMPILE_OPTIONS

Список

Все флаги без префикса -I из CMAKE_PKG_CONFIG_CFLAGS

CMAKE_PKG_CONFIG_LIBS

Строка

Значение ключевого слова Libs

CMAKE_PKG_CONFIG_LIBDIRS

Список

Все флаги с префиксом -L из CMAKE_PKG_CONFIG_LIBS

CMAKE_PKG_CONFIG_LIBNAMES

Список

Все флаги с префиксом -l из CMAKE_PKG_CONFIG_LIBS

CMAKE_PKG_CONFIG_LINK_OPTIONS

Список

Все флаги без префиксов -L или -l из CMAKE_PKG_CONFIG_LIBS

CMAKE_PKG_CONFIG_*_PRIVATE

*

CFLAGS / LIBS / REQUIRES и производные, но в форме с суффиксом .private

SYSTEM_INCLUDE_DIRS

Переопределяет каталоги "системы" для целей обработки флагов каталогов включения в CMAKE_PKG_CONFIG_CFLAGS и производных переменных.

Если этот параметр не задан, стандартные каталоги предоставляются первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_SYS_INCLUDE_DIRS
  2. Переменная среды PKG_CONFIG_SYSTEM_INCLUDE_PATH
  3. Результат выполнения pkgconf --variable pc_system_includedirs pkg-config
  4. Платформенно-зависимое значение по умолчанию

Кроме того, если ENV_MODE равно PKGCONF, переменная CMAKE_PKG_CONFIG_PKGCONF_INCLUDES будет добавлены в список, если она доступна. Если нет, будут запрошены и добавлены следующие переменные среды:

  • CPATH
  • C_INCLUDE_PATH
  • CPLUS_INCLUDE_PATH
  • OBJC_INCLUDE_PATH
  • INCLUDE (Только Windows)
SYSTEM_LIBRARY_DIRS

Переопределяет каталоги "системы" для целей обработки флагов каталогов библиотек в CMAKE_PKG_CONFIG_LIBS и производных переменных.

Если этот параметр не задан, стандартные каталоги предоставляются первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_SYS_LIB_DIRS
  2. Переменная среды PKG_CONFIG_SYSTEM_LIBRARY_PATH
  3. Результат выполнения pkgconf --variable pc_system_libdirs pkg-config
  4. Платформенно-зависимое значение по умолчанию

Кроме того, если ENV_MODE равно PKGCONF, переменная CMAKE_PKG_CONFIG_PKGCONF_LIB_DIRS будет добавлена в список, если она доступна. В противном случае будет запрошена и добавлена переменная среды LIBRARY_PATH.

ALLOW_SYSTEM_INCLUDES

Сохраняет каталоги "системы" при обработке флагов каталогов включения в CMAKE_PKG_CONFIG_CFLAGS и производных переменных.

Если этот параметр не задан, значение по умолчанию определяется первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_ALLOW_SYS_INCLUDES
  2. Если переменная среды PKG_CONFIG_ALLOW_SYSTEM_CFLAGS определена, флаги сохраняются, в противном случае они отфильтровываются при обработке флагов.
ALLOW_SYSTEM_LIBS

Сохраняет каталоги "системы" при обработке флагов каталогов библиотек в CMAKE_PKG_CONFIG_LIBS и производных переменных.

Если этот параметр не задан, значение по умолчанию определяется первым доступным из следующих значений:

  1. CMAKE_PKG_CONFIG_ALLOW_SYS_LIBS
  2. Если переменная среды PKG_CONFIG_ALLOW_SYSTEM_LIBS определена, флаги сохраняются, в противном случае они отфильтровываются при обработке флагов.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/cmake_pkg_config.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API