Spec-Zone.ru › CMake 3.7

FindPkgConfig

A pkg-config модуль для CMake.

Находит исполняемый файл pkg-config и добавляет команды pkg_check_modules() и pkg_search_module().

Для поиска исполняемого файла pkg-config, используется переменная PKG_CONFIG_EXECUTABLE или переменная окружения PKG_CONFIG в первую очередь.

pkg_get_variable

Возвращает значение переменной из пакета:

pkg_get_variable(<RESULT> <MODULE> <VARIABLE>)

Например:

pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
pkg_check_modules

Проверяет наличие всех указанных модулей.

pkg_check_modules(<PREFIX> [REQUIRED] [QUIET]
                  [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH]
                  [IMPORTED_TARGET]
                  <MODULE> [<MODULE>]*)

Если параметр REQUIRED установлен, макросы завершатся ошибкой, если модуль(и) не найден(ы).

Если параметр QUIET установлен, сообщения о статусе не будут выводиться.

По умолчанию, если CMAKE_MINIMUM_REQUIRED_VERSION имеет значение 3.1 или выше, или если PKG_CONFIG_USE_CMAKE_PREFIX_PATH установлена, пути из переменных кэша CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH и CMAKE_APPBUNDLE_PATH и переменных окружения будут добавлены в путь поиска pkg-config. Параметры NO_CMAKE_PATH и NO_CMAKE_ENVIRONMENT_PATH отключают это поведение для переменных кэша и переменных окружения соответственно. Параметр IMPORTED_TARGET создаст импортированный целевой объект с именем PkgConfig::<PREFIX>>, который можно напрямую передать в качестве аргумента команде target_link_libraries().

Устанавливает следующие переменные:

PKG_CONFIG_FOUND          ... if pkg-config executable was found
PKG_CONFIG_EXECUTABLE     ... pathname of the pkg-config program
PKG_CONFIG_VERSION_STRING ... the version of the pkg-config program found
                              (since CMake 2.8.8)

Для следующих переменных существуют два набора значений; первый - общий и имеет заданный префикс PREFIX. Второй набор содержит флаги, которые выдаются, когда pkg-config вызывается с опцией --static.

<XPREFIX>_FOUND          ... set to 1 if module(s) exist
<XPREFIX>_LIBRARIES      ... only the libraries (w/o the '-l')
<XPREFIX>_LIBRARY_DIRS   ... the paths of the libraries (w/o the '-L')
<XPREFIX>_LDFLAGS        ... all required linker flags
<XPREFIX>_LDFLAGS_OTHER  ... all other linker flags
<XPREFIX>_INCLUDE_DIRS   ... the '-I' preprocessor flags (w/o the '-I')
<XPREFIX>_CFLAGS         ... all required cflags
<XPREFIX>_CFLAGS_OTHER   ... the other compiler flags
<XPREFIX> = <PREFIX>        for common case
<XPREFIX> = <PREFIX>_STATIC for static linking

Существуют некоторые специальные переменные, префикс которых зависит от количества заданных модулей. Если модуль один, префикс <PREFIX> остается неизменным. Если модулей несколько, префикс изменится на <PREFIX>_<MODNAME>:

<XPREFIX>_VERSION    ... version of the module
<XPREFIX>_PREFIX     ... prefix-directory of the module
<XPREFIX>_INCLUDEDIR ... include-dir of the module
<XPREFIX>_LIBDIR     ... lib-dir of the module
<XPREFIX> = <PREFIX>  when |MODULES| == 1, else
<XPREFIX> = <PREFIX>_<MODNAME>

Параметр <MODULE> может иметь следующие форматы:

{MODNAME}            ... matches any version
{MODNAME}>={VERSION} ... at least version <VERSION> is required
{MODNAME}={VERSION}  ... exactly version <VERSION> is required
{MODNAME}<={VERSION} ... modules must not be newer than <VERSION>

Примеры

pkg_check_modules (GLIB2   glib-2.0)
pkg_check_modules (GLIB2   glib-2.0>=2.10)

Требует как минимум версии 2.10 glib2 и определяет, например, GLIB2_VERSION=2.10.3

pkg_check_modules (FOO     glib-2.0>=2.10 gtk+-2.0)

Требует как glib2, так и gtk2 и определяет, например, FOO_glib-2.0_VERSION=2.10.3 и FOO_gtk+-2.0_VERSION=2.8.20

pkg_check_modules (XRENDER REQUIRED xrender)

Определяет, например:

XRENDER_LIBRARIES=Xrender;X11``
XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
pkg_search_module

Аналогично pkg_check_modules(), но вместо этого проверяет наличие указанных модулей и использует первый рабочий.

pkg_search_module(<PREFIX> [REQUIRED] [QUIET]
                  [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH]
                  [IMPORTED_TARGET]
                  <MODULE> [<MODULE>]*)

Примеры

pkg_search_module (BAR     libxml-2.0 libxml2 libxml>=2)
PKG_CONFIG_EXECUTABLE

Путь к исполняемому файлу pkg-config.

PKG_CONFIG_USE_CMAKE_PREFIX_PATH

Указывает, следует ли pkg_check_modules() и pkg_search_module() добавлять пути из переменных кэша CMAKE_PREFIX_PATH, CMAKE_FRAMEWORK_PATH и CMAKE_APPBUNDLE_PATH в путь поиска pkg-config.

Если эта переменная не установлена, это поведение включено по умолчанию, если CMAKE_MINIMUM_REQUIRED_VERSION имеет значение 3.1 или выше, в противном случае отключено.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.7/module/FindPkgConfig.html

Spec-Zone.ru

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