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_check_modules
¶ Checks for all the given modules.
pkg_check_modules(<PREFIX> [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] <MODULE> [<MODULE>]*)
When the
REQUIRED
argument was set, macros will fail with an error when module(s) could not be found.When the
QUIET
argument is set, no status messages will be printed.By default, if
CMAKE_MINIMUM_REQUIRED_VERSION
is 3.1 or later, or ifPKG_CONFIG_USE_CMAKE_PREFIX_PATH
is set, theCMAKE_PREFIX_PATH
,CMAKE_FRAMEWORK_PATH
, andCMAKE_APPBUNDLE_PATH
cache and environment variables will be added topkg-config
search path. TheNO_CMAKE_PATH
andNO_CMAKE_ENVIRONMENT_PATH
arguments disable this behavior for the cache variables and the environment variables, respectively.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-config
was called with the--static
option.<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.3
pkg_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.3
andFOO_gtk+-2.0_VERSION=2.8.20
pkg_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] <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_PATH
cache and environment variables topkg-config
search path.If this variable is not set, this behavior is enabled by default if
CMAKE_MINIMUM_REQUIRED_VERSION
is 3.1 or later, disabled otherwise.