pkg-config   -   Return  metainformation  about  installed
       libraries


SYNOPSIS

       pkg-config   [--modversion]   [--help]    [--print-errors]
       [--silence-errors]   [--cflags]  [--libs]  [--libs-only-L]
       [--libs-only-l]  [--cflags-only-I]   [--variable=VARIABLE­
       NAME]       [--define-variable=VARIABLENAME=VARIABLEVALUE]
       [--uninstalled]   [--exists]   [--atleast-version=VERSION]
       [--exact-version=VERSION]          [--max-version=VERSION]
       [LIBRARIES...]


DESCRIPTION

       The pkg-config program is  used  to  retrieve  information
       about  installed libraries in the system.  It is typically
       used to compile and link against one  or  more  libraries.
       Here is a typical usage scenario in a Makefile:

       program: program.c
            cc program.c `pkg-config --cflags --libs gnomeui`

       pkg-config  retrieves information about packages from spe­
       cial metadata files. These files are named after the pack­
       age,  with the extension .pc. By default, pkg-config looks
       in the directory prefix/lib/pkgconfig for these files;  it
       will  also look in the colon-separated list of directories
       specified by the PKG_CONFIG_PATH environment variable.

       The package name specified on the pkg-config command  line
       is  defined to be the name of the metadata file, minus the
       .pc extension. If a library can install multiple  versions
       simultaneously,  it  must  give  each version its own name
       (for example, GTK 1.2 might have the package  name  "gtk+"
       while GTK 2.0 has "gtk+-2.0").


OPTIONS

       The following options are supported:

       --modversion
              Requests   that  the  version  information  of  the
              libraries specified on the  command  line  be  dis­
              played.   If  pkg-config can find all the libraries
              on the command line, each library's version  string
              is printed to stdout, one version per line. In this
              case pkg-config exits successfully. If one or  more
              libraries  is  unknown,  pkg-config  exits  with  a
              nonzero code, and the contents of stdout are  unde­
              fined.


       --print-errors
              If  one or more of the modules on the command line,
              or their dependencies, are  not  found,  or  if  an
              error  occurs  in  parsing a problem to be printed.
              With "predicate" options such  as  "--exists"  pkg-
              config  runs silently by default, because it's usu­
              ally used in scripts that want  to  control  what's
              output.  This  option  can  be  used alone (to just
              print errors encountered locating  modules  on  the
              command  line)  or with other options. The PKG_CON­
              FIG_DEBUG_SPEW environment variable overrides  this
              option.

       --silence-errors
              If  one or more of the modules on the command line,
              or their dependencies, are  not  found,  or  if  an
              error  occurs  in  parsing  a  problem  from  being
              printed.   With   "predicate"   options   such   as
              "--exists"  pkg-config  runs  silently  by default,
              because it's usually used in scripts that  want  to
              control  what's output. So this option is only use­
              ful with options such as "--cflags"  or  "--modver­
              sion"  that  print  errors by default. The PKG_CON­
              FIG_DEBUG_SPEW environment variable overrides  this
              option.

       --errors-to-stdout
              If  printing  errors,  print  them to stdout rather
              than the default stderr

       The following options are used to compile  and  link  pro­
       grams:

       --cflags
              This   prints   pre-processor   and  compile  flags
              required to compile the  packages  on  the  command
              line,  including  flags for all their dependencies.
              Flags are "compressed" so that each identical  flag
              appears  only once. pkg-config exits with a nonzero
              code if it can't find metadata for one or  more  of
              the packages on the command line.

       --libs This  option  is  identical  to "--cflags", only it
              prints the link flags. As with  "--cflags",  dupli­
              cate  flags  are  merged (maintaining proper order­
              ing), and flags for dependencies  are  included  in
              the output.

              This prints the -L/-R part of "--libs". That is, it
              defines the library search path but doesn't specify
              which libraries to link with.

       --libs-only-l
              This  prints  the  -l  part  of  "--libs"  for  the
              libraries specified on the command line. Note  that
              the  union  of  "--libs-only-l" and "--libs-only-L"
              may be smaller than "--libs", due to flags such  as
              -rdynamic.

       --variable=VARIABLENAME
              This  returns  the value of a variable defined in a
              package's .pc file. Most packages define the  vari­
              able "prefix", for example, so you can say:
                $ pkg-config --variable=prefix glib-2.0
                /usr/

       --define-variable=VARIABLENAME=VARIABLEVALUE
              This sets a global value for a variable, overriding
              the value in any example, so you can say:
                $ pkg-config --print-errors --define-variable=prefix=/foo --variable=prefix glib-2.0
                /foo

       --uninstalled
              Normally if you request the package "foo"  and  the
              package  "foo-uninstalled"  exists, pkg-config will
              prefer the "-uninstalled" variant. This allows com­
              pilation/linking  against  uninstalled packages. If
              you specify the "--uninstalled" option,  pkg-config
              will  return  successfully  if  any  "-uninstalled"
              packages are being used, and return failure (false)
              otherwise.   (The  "PKG_CONFIG_DISABLE_UNINSTALLED"
              environment variable keeps pkg-config from  implic­
              itly  choosing  "-uninstalled" packages, so if that
              variable is set, they will only have been  used  if
              you  pass a name like "foo-uninstalled" on the com­
              mand line explicitly.)

       --exists

       --atleast-version=VERSION

       --exact-version=VERSION

       --max-version=VERSION
              These options test whether the package or  list  of
              packages  on the command line are known to pkg-con­
              fig, and optionally whether the version number of a
              package  meets certain contraints.  If all packages

              pkg-config  exits  successfully. Otherwise it exits
              unsuccessfully.

              Rather than using the version-test options, you can
              simply give a version constraint after each package
              name, for example:
                $ pkg-config --exists 'glib-2.0 >= 1.3.4 libxml = 1.8.3'
              Remember to use --print-errors if  you  want  error
              messages.


ENVIRONMENT VARIABLES

       PKG_CONFIG_PATH
              A colon-separated list of directories to search for
              .pc files.  The default directory  will  always  be
              searched  after  searching the path; the default is
              libdir/pkgconfig where libdir is the  libdir  where
              pkg-config was installed.

       PKG_CONFIG_DEBUG_SPEW
              If  set,  causes  pkg-config  to print all kinds of
              debugging information and report all errors.

       PKG_CONFIG_TOP_BUILD_DIR
              A value to set for the magic variable pc_top_build­
              dir  which may appear in .pc files. If the environ­
              ment  variable  is  not  set,  the  default   value
              '$(top_builddir)'   will  be  used.  This  variable
              should refer to the top builddir  of  the  Makefile
              where the compile/link flags reported by pkg-config
              will be  used.   This  only  matters  when  compil­
              ing/linking  against a package that hasn't yet been
              installed.

       PKG_CONFIG_DISABLE_UNINSTALLED
              Normally if you request the package "foo"  and  the
              package  "foo-uninstalled"  exists, pkg-config will
              prefer the "-uninstalled" variant. This allows com­
              pilation/linking  against uninstalled packages.  If
              this environment variable is set, it disables  said
              behavior.


AUTOCONF MACROS

       PKG_CHECK_MODULES(VARIABLEBASE,MODULELIST[,ACTION-IF-
              FOUND,[ACTION-IF-NOT-FOUND]])

              The  macro PKG_CHECK_MODULES can be used in config­
              ure.in to check whether modules  exist.  A  typical
              usage would be:


              This    would    result    in    MYSTUFF_LIBS   and
              MYSTUFF_CFLAGS substitution variables, set  to  the
              libs  and  cflags  for the given module list.  If a
              module is missing or  has  the  wrong  version,  by
              default  configure  will  abort  with a message. To
              replace the default action, specify  an  ACTION-IF-
              NOT-FOUND.  PKG_CHECK_MODULES  will  not  print any
              error messages if you specify your  own  ACTION-IF-
              NOT-FOUND.   However,  it  will  set  the  variable
              MYSTUFF_PKG_ERRORS, which you can  use  to  display
              what went wrong.


METADATA FILE SYNTAX

       To  add  a library to the set of packages pkg-config knows
       about, simply install a .pc file. You should install  this
       file to libdir/pkgconfig.

       Here is an example file:
       # This is a comment
       prefix=/home/hp/unst   # this defines a variable
       exec_prefix=${prefix}  # defining another variable in terms of the first
       libdir=${exec_prefix}/lib
       includedir=${prefix}/include

       Name: GObject                            # human-readable name
       Description: Object/type system for GLib # human-readable description
       Version: 1.3.1
       Requires: glib-2.0 = 1.3.1
       Conflicts: foobar <= 4.5
       Libs: -L${libdir} -lgobject-1.3
       Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib/include

       You  would  normally generate the file using configure, of
       course, so that the prefix, etc. are  set  to  the  proper
       values.

       Files  have  two kinds of line: keyword lines start with a
       keyword plus a colon, and variable definitions start  with
       an  alphanumeric  string plus an equals sign. Keywords are
       defined in advance and have special meaning to pkg-config;
       variables do not, you can have any variables that you wish
       (however, users may expect to retrieve the usual directory
       name variables).

       Note  that  variable  references are written "${foo}"; you
       can escape literal "${" as "$${".

              package.  Note that it is not the name passed as an
              argument to pkg-config.

       Description:
              This should be a brief description of the package

       Version:
              This should be the  most-specific-possible  package
              version string.

       Requires:
              This is a comma-separated list of packages that are
              required by  your  package.  Flags  from  dependent
              packages  will  be  merged in to the flags reported
              for your package. Optionally, you can  specify  the
              version  of  the required package (using the opera­
              tors =, <, >, >=, <=); specifying a version  allows
              pkg-config  to perform extra sanity checks. You may
              only mention the  same  package  one  time  on  the
              Requires:  line.  If  the  version  of a package is
              unspecified, any  version  will  be  used  with  no
              checking.

       Conflicts:
              This  optional  line  allows  pkg-config to perform
              additional sanity checks, primarily to detect  bro­
              ken  user installations.  The syntax is the same as
              Requires: except that you can list the same package
              more  than  once here, for example "foobar = 1.2.3,
              foobar = 1.2.5, foobar >= 1.3", if you have  reason
              to  do  so. If a version isn't specified, then your
              package conflicts with all  versions  of  the  men­
              tioned  package.  If a user tries to use your pack­
              age and a conflicting package  at  the  same  time,
              then pkg-config will complain.

       Libs:  This  line  should  give the link flags specific to
              your package.  Don't add  any  flags  for  required
              packages;  pkg-config will add those automatically.

       Cflags:
              This line should list the compile flags specific to
              your  package.   Don't  add  any flags for required
              packages; pkg-config will add those  automatically.


AUTHOR

       pkg-config  was  written by James Henstridge, rewritten by
       Martijn van Beers, and rewritten again by  Havoc  Penning­
       ton.  Tim  Janik, Owen Taylor, and Raja Harinath submitted
       suggestions and some code.  gnome-config  was  written  by
       Miguel  de Icaza, Raja Harinath and various hackers in the

       program.


BUGS

       Hah!


Man(1) output converted with man2html