FindPkgConfig
Модуль 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)
Требуется версия glib2 не ниже 2.10 и определяет, например,
GLIB2_VERSION=2.10.3pkg_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.20pkg_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.6/module/FindPkgConfig.html