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_VERSION3.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_VERSION3.1 или выше, в противном случае выключено.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.10/module/FindPkgConfig.html