FindPkgConfig¶
A pkg-config module for CMake.
Finds the pkg-config executable and add the
pkg_check_modules() and pkg_search_module()
commands.
In order to find the pkg-config executable, it uses the
PKG_CONFIG_EXECUTABLE variable or the PKG_CONFIG
environment variable first.
-
pkg_get_variable¶ Retrieves the value of a variable from a package:
pkg_get_variable(<RESULT> <MODULE> <VARIABLE>)
For example:
pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir)
-
pkg_check_modules¶ Checks for all the given modules.
pkg_check_modules(<PREFIX> [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [IMPORTED_TARGET] <MODULE> [<MODULE>]*)When the
REQUIREDargument was set, macros will fail with an error when module(s) could not be found.When the
QUIETargument is set, no status messages will be printed.By default, if
CMAKE_MINIMUM_REQUIRED_VERSIONis 3.1 or later, or ifPKG_CONFIG_USE_CMAKE_PREFIX_PATHis set, theCMAKE_PREFIX_PATH,CMAKE_FRAMEWORK_PATH, andCMAKE_APPBUNDLE_PATHcache and environment variables will be added topkg-configsearch path. TheNO_CMAKE_PATHandNO_CMAKE_ENVIRONMENT_PATHarguments disable this behavior for the cache variables and the environment variables, respectively. TheIMPORTED_TARGETargument will create an imported target named PkgConfig::<PREFIX>> that can be passed directly as an argument totarget_link_libraries().It sets the following variables:
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)For the following variables two sets of values exist; first one is the common one and has the given PREFIX. The second set contains flags which are given out when
pkg-configwas called with the--staticoption.<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
There are some special variables whose prefix depends on the count of given modules. When there is only one module, <PREFIX> stays unchanged. When there are multiple modules, the prefix will be changed to <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>
A <MODULE> parameter can have the following formats:
{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>Examples
pkg_check_modules (GLIB2 glib-2.0)
pkg_check_modules (GLIB2 glib-2.0>=2.10)
Requires at least version 2.10 of glib2 and defines e.g.
GLIB2_VERSION=2.10.3pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0)
Requires both glib2 and gtk2, and defines e.g.
FOO_glib-2.0_VERSION=2.10.3andFOO_gtk+-2.0_VERSION=2.8.20pkg_check_modules (XRENDER REQUIRED xrender)
Defines for example:
XRENDER_LIBRARIES=Xrender;X11`` XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp
-
pkg_search_module¶ Same as
pkg_check_modules(), but instead it checks for given modules and uses the first working one.pkg_search_module(<PREFIX> [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [IMPORTED_TARGET] <MODULE> [<MODULE>]*)Examples
pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2)
-
PKG_CONFIG_EXECUTABLE¶ Path to the pkg-config executable.
-
PKG_CONFIG_USE_CMAKE_PREFIX_PATH¶ Whether
pkg_check_modules()andpkg_search_module()should add the paths inCMAKE_PREFIX_PATH,CMAKE_FRAMEWORK_PATH, andCMAKE_APPBUNDLE_PATHcache and environment variables topkg-configsearch path.If this variable is not set, this behavior is enabled by default if
CMAKE_MINIMUM_REQUIRED_VERSIONis 3.1 or later, disabled otherwise.