FindPkgConfig¶
A pkg-config module for CMake.
Finds the pkg-config executable and adds the pkg_get_variable(),
pkg_check_modules() and pkg_search_module() commands. The
following variables will also be set:
- PKG_CONFIG_FOUND
- if pkg-config executable was found
- PKG_CONFIG_EXECUTABLE
- pathname of the pkg-config program
- PKG_CONFIG_VERSION_STRING
- version of pkg-config (since CMake 2.8.8)
- 
pkg_check_modules¶
- Checks for all the given modules, setting a variety of result variables in the calling scope. - pkg_check_modules(<prefix> [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [IMPORTED_TARGET [GLOBAL]] <moduleSpec> [<moduleSpec>...]) - When the - REQUIREDargument is given, the command will fail with an error if module(s) could not be found.- When the - QUIETargument is given, no status messages will be printed.- By default, if - CMAKE_MINIMUM_REQUIRED_VERSIONis 3.1 or later, or if- PKG_CONFIG_USE_CMAKE_PREFIX_PATHis set to a boolean- Truevalue, then the- CMAKE_PREFIX_PATH,- CMAKE_FRAMEWORK_PATH, and- CMAKE_APPBUNDLE_PATHcache and environment variables will be added to the- pkg-configsearch path. The- NO_CMAKE_PATHand- NO_CMAKE_ENVIRONMENT_PATHarguments disable this behavior for the cache variables and environment variables respectively.- The - IMPORTED_TARGETargument will create an imported target named- PkgConfig::<prefix>that can be passed directly as an argument to- target_link_libraries(). The- GLOBALargument will make the imported target available in global scope.- Each - <moduleSpec>can be either a bare module name or it can be a module name with a version constraint (operators- =,- <,- >,- <=and- >=are supported). The following are examples for a module named- foowith various constraints:- foomatches any version.
- foo<2only matches versions before 2.
- foo>=3.1matches any version from 3.1 or later.
- foo=1.2.3requires that foo must be exactly version 1.2.3.
 - The following variables may be set upon return. Two sets of values exist: One for the common case ( - <XXX> = <prefix>) and another for the information- pkg-configprovides when called with the- --staticoption (- <XXX> = <prefix>_STATIC).- <XXX>_FOUND
- set to 1 if module(s) exist
- <XXX>_LIBRARIES
- only the libraries (without the ‘-l’)
- <XXX>_LINK_LIBRARIES
- the libraries and their absolute paths
- <XXX>_LIBRARY_DIRS
- the paths of the libraries (without the ‘-L’)
- <XXX>_LDFLAGS
- all required linker flags
- <XXX>_LDFLAGS_OTHER
- all other linker flags
- <XXX>_INCLUDE_DIRS
- the ‘-I’ preprocessor flags (without the ‘-I’)
- <XXX>_CFLAGS
- all required cflags
- <XXX>_CFLAGS_OTHER
- the other compiler flags
 - All but - <XXX>_FOUNDmay be a ;-list if the associated variable returned from- pkg-confighas multiple values.- There are some special variables whose prefix depends on the number of - <moduleSpec>given. When there is only one- <moduleSpec>,- <YYY>will simply be- <prefix>, but if two or more- <moduleSpec>items are given,- <YYY>will be- <prefix>_<moduleName>.- <YYY>_VERSION
- version of the module
- <YYY>_PREFIX
- prefix directory of the module
- <YYY>_INCLUDEDIR
- include directory of the module
- <YYY>_LIBDIR
- lib directory of the module
 - Examples: - pkg_check_modules (GLIB2 glib-2.0) - Looks for any version of glib2. If found, the output variable - GLIB2_VERSIONwill hold the actual version found.- pkg_check_modules (GLIB2 glib-2.0>=2.10) - Looks for at least version 2.10 of glib2. If found, the output variable - GLIB2_VERSIONwill hold the actual version found.- pkg_check_modules (FOO glib-2.0>=2.10 gtk+-2.0) - Looks for both glib2-2.0 (at least version 2.10) and any version of gtk2+-2.0. Only if both are found will - FOObe considered found. The- FOO_glib-2.0_VERSIONand- FOO_gtk+-2.0_VERSIONvariables will be set to their respective found module versions.- pkg_check_modules (XRENDER REQUIRED xrender) - Requires any version of - xrender. Example output variables set by a successful call:- XRENDER_LIBRARIES=Xrender;X11 XRENDER_STATIC_LIBRARIES=Xrender;X11;pthread;Xau;Xdmcp 
- 
pkg_search_module¶
- The behavior of this command is the same as - pkg_check_modules(), except that rather than checking for all the specified modules, it searches for just the first successful match.- pkg_search_module(<prefix> [REQUIRED] [QUIET] [NO_CMAKE_PATH] [NO_CMAKE_ENVIRONMENT_PATH] [IMPORTED_TARGET [GLOBAL]] <moduleSpec> [<moduleSpec>...]) - If a module is found, the - <prefix>_MODULE_NAMEvariable will contain the name of the matching module. This variable can be used if you need to run- pkg_get_variable().- Example: - pkg_search_module (BAR libxml-2.0 libxml2 libxml>=2) 
- 
pkg_get_variable¶
- Retrieves the value of a pkg-config variable - varNameand stores it in the result variable- resultVarin the calling scope.- pkg_get_variable(<resultVar> <moduleName> <varName>) - If - pkg-configreturns multiple values for the specified variable,- resultVarwill contain a ;-list.- For example: - pkg_get_variable(GI_GIRDIR gobject-introspection-1.0 girdir) 
Variables Affecting Behavior¶
- 
PKG_CONFIG_EXECUTABLE¶
- This can be set to the path of the pkg-config executable. If not provided, it will be set by the module as a result of calling - find_program()internally. The- PKG_CONFIGenvironment variable can be used as a hint.
- 
PKG_CONFIG_USE_CMAKE_PREFIX_PATH¶
- Specifies whether - pkg_check_modules()and- pkg_search_module()should add the paths in the- CMAKE_PREFIX_PATH,- CMAKE_FRAMEWORK_PATHand- CMAKE_APPBUNDLE_PATHcache and environment variables to the- pkg-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.
