LinuxCommandLibrary

pkg-config

a system for configuring build dependency information

TLDR

Get the list of libraries and their dependencies

$ pkg-config --libs [library1 library2 ...]
copy


Get the list of libraries, their dependencies, and proper cflags for gcc
$ pkg-config --cflags --libs [library1 library2 ...]
copy


Compile your code with libgtk-3, libwebkit2gtk-4.0 and all their dependencies
$ c++ example.cpp $(pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0) -o example
copy

SYNOPSIS

pkgconf [options] [list of modules]

DESCRIPTION

pkgconf is a program which helps to configure compiler and linker flags for development libraries. This allows build systems to detect other de‐ pendencies and use them with the system toolchain.

GENERAL OPTIONS

--version Display the supported pkg-config version and exit. --atleast-pkgconfig-version=VERSION Exit with error if we do not support the requested pkg-config version. --errors-to-stdout Print all errors on the main output stream instead of the error output stream. --silence-errors Do not display any errors at all. --list-all Walk all directories listed in the PKG_CONFIG_PATH environmental variable and display information on packages which have regis‐ tered information there. --simulate Simulates resolving a dependency graph based on the requested modules on the command line. Dumps a series of trees denoting pkgconf's resolver state. --no-cache Skip caching packages when they are loaded into the internal re‐ solver. This may result in an alternate dependency graph being computed. --ignore-conflicts Ignore ‘Conflicts’ rules in modules. --env-only Learn about pkgconf's configuration strictly from environmental variables. --maximum-traverse-depth=DEPTH Impose a limit on the allowed depth in the dependency graph. For example, a depth of 2 will restrict the resolver from acting on child dependencies of modules added to the resolver's solution. --static Compute a deeper dependency graph and use compiler/linker flags intended for static linking. --pure Treats the computed dependency graph as if it were pure. This is mainly intended for use with the --static flag. --no-provides Ignore ‘Provides’ rules in modules when resolving dependencies. --with-path=PATH Adds a new module search path to pkgconf's dependency resolver. Paths added in this way are given preference before other paths. --define-prefix Attempts to determine the prefix variable to use for CFLAGS and LIBS entry relocations. This is mainly useful for platforms where framework SDKs are relocatable, such as Windows. --dont-define-prefix Disables the ‘define-prefix’ feature. --prefix-variable=VARIABLE Sets the ‘prefix’ variable used by the ‘define-prefix’ feature. --relocate=PATH Relocates a path using the pkgconf_path_relocate API. This is mainly used by the testsuite to provide a guaranteed interface to the system's path relocation backend. --dont-relocate-paths Disables the path relocation feature.

MODULE-SPECIFIC OPTIONS

--atleast-version=VERSION Exit with error if a module's version is less than the specified version. --exact-version=VERSION Exit with error if a module's version is not exactly the speci‐ fied version. --max-version=VERSION Exit with error if a module's version is greater than the speci‐ fied version. --exists Exit with a non-zero result if the dependency resolver was unable to find all of the requested modules. --uninstalled Exit with a non-zero result if the dependency resolver uses an ‘uninstalled’ module as part of it's solution. --no-uninstalled Forbids the dependency resolver from considering 'uninstalled' modules as part of a solution.

QUERY-SPECIFIC OPTIONS

--cflags, --cflags-only-I, --cflags-only-other Display either all CFLAGS, only -I CFLAGS or only CFLAGS that are not -I. --libs, --libs-only-L, --libs-only-l, --libs-only-other Display either all linker flags, only -L linker flags, only -l linker flags or only linker flags that are not -L or -l. --keep-system-cflags, --keep-system-libs Keep CFLAGS or linker flag fragments that would be filtered due to being included by default in the compiler. --define-variable=VARNAME=VALUE Define VARNAME as VALUE. Variables are used in query output, and some modules' results may change based on the presence of a vari‐ able definition. --print-variables Print all seen variables for a module to the output channel. --print-provides Print all relevant ‘Provides’ entries for a module to the output channel. --variable=VARNAME Print the value of VARNAME. --print-requires, --print-requires-private Print the modules included in either the Requires field or the Requires.private field. --digraph Dump the dependency resolver's solution as a graphviz ‘dot’ file. This can be used with graphviz to visualize module interdependen‐ cies. --path Display the filenames of the ‘.pc’ files used by the dependency resolver for a given dependency set. --env=VARNAME Print the requested values as variable declarations in a similar format as the env(1) command. --fragment-filter=TYPES Filter the fragment lists for the specified types. --modversion Print the version of the queried module.

ENVIRONMENT

PKG_CONFIG_PATH List of secondary directories where ‘.pc’ files are looked up. PKG_CONFIG_LIBDIR List of primary directories where ‘.pc’ files are looked up. PKG_CONFIG_SYSROOT_DIR ‘sysroot’ directory, will be prepended to every path defined in PKG_CONFIG_PATH. Useful for cross compilation. PKG_CONFIG_TOP_BUILD_DIR Provides an alternative setting for the ‘pc_top_builddir’ global variable. PKG_CONFIG_PURE_DEPGRAPH If set, enables the same behaviour as the --pure flag. PKG_CONFIG_SYSTEM_INCLUDE_PATH List of paths that are considered system include paths by the toolchain. This is a pkgconf-specific extension. PKG_CONFIG_SYSTEM_LIBRARY_PATH List of paths that are considered system library paths by the toolchain. This is a pkgconf-specific extension. PKG_CONFIG_DISABLE_UNINSTALLED If set, enables the same behaviour as the --no-uninstalled flag. PKG_CONFIG_LOG ‘logfile’ which is used for dumping audit information concerning installed module versions. PKG_CONFIG_DEBUG_SPEW If set, enables additional debug logging. The format of the de‐ bug log messages is implementation-specific. PKG_CONFIG_DONT_RELOCATE_PATHS If set, disables the path relocation feature.

EXAMPLES

Displaying the CFLAGS of a package: $ pkgconf --cflags foo -fPIC -I/usr/include/foo

SEE ALSO

pc(5), pkg.m4(7)

Copied to clipboard