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истинно, поиск «неустановленных» пакетов отключается.Если эта опция не указана, стандартное поведение поиска определяется первым доступным из следующих значений:
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 - Если корневой путь недоступен, в пути включения или каталоги библиотек ничего не добавляется, а
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/latest/command/cmake_pkg_config.html