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)Для следующих переменных существуют два набора значений; первый — общий и содержит заданный префикс. Второй набор содержит флаги, которые выдаются, когда
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.9/module/FindPkgConfig.html