Configuring the right options to build programs to work with
libraries--especially shared libraries--that are available
on POSIX systems can be very complicated.
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 use these libraries;
for example, the command-line options
to use a library named lib
would be found by calling a utility named lib-config.
A more recent convention is that these options
are available from the generic pkg-config program,
which has 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; construction environments have a &ParseConfig; method
that executes a *config utility
(either pkg-config or a
more specific utility)
and configures the appropriate construction variables
in the environment
based on the command-line options
returned by the specified command.
env = Environment()
env['CPPPATH'] = ['/lib/compat']
env.ParseConfig("pkg-config x11 --cflags --libs")
print env['CPPPATH']
&SCons; will execute the specified command string,
parse the resultant flags,
and add the flags to the appropriate environment variables.
scons -Q
In the example above, &SCons; has added the include directory to
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 &MergeFlags; method,
so that each option only occurs once in the construction variable:
env = Environment()
env.ParseConfig("pkg-config x11 --cflags --libs")
env.ParseConfig("pkg-config x11 --cflags --libs")
print env['CPPPATH']
scons -Q