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.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.7/module/FindPkgConfig.html