# Finding Installed Library Information: the &ParseConfig; Function

Configuring the right options to build programs to work with libraries--especially shared libraries--that are available on POSIX systems can be complex. To help this situation, various utilies with names that end in `config` return the command-line options for the GNU Compiler Collection (GCC) that are needed to build and link against those libraries; for example, the command-line options to use a library named `lib` could be found by calling a utility named `lib-config`.

A more recent convention is that these options are available through the generic `pkg-config` program, providing a common framework, error handling, and the like, so that all the package creator has to do is provide the set of strings for his particular package.

&SCons; &consvars; have a &f-link-ParseConfig; method that asks the host system to execute a command and then configures the appropriate &consvars; based on the output of that command. This lets you run a program like `pkg-config` or a more specific utility to help set up your build.

env = Environment() env['CPPPATH'] = ['/lib/compat'] env.ParseConfig("pkg-config x11 --cflags --libs") print("CPPPATH:", env['CPPPATH'])

&SCons; will execute the specified command string, parse the resultant flags, and add the flags to the appropriate environment variables.

    % scons -Q
    CPPPATH: ['/lib/compat', '/usr/X11/include']
    scons: `.' is up to date.

In the example above, &SCons; has added the include directory to &cv-link-CPPPATH; (Depending upon what other flags are emitted by the `pkg-config` command, other variables may have been extended as well.)

Note that the options are merged with existing options using the &f-link-MergeFlags; method, so that each option only occurs once in the &consvar;.

env = Environment() env.ParseConfig("pkg-config x11 --cflags --libs") env.ParseConfig("pkg-config x11 --cflags --libs") print("CPPPATH:", "CPPPATH:", env['CPPPATH'])

    % scons -Q
    CPPPATH: ['/usr/X11/include']
    scons: `.' is up to date.