%scons; %builders-mod; %functions-mod; %tools-mod; %variables-mod; ]>
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 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 ['/lib/compat', '/usr/X11/include'] scons: `.' is up to date. 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 ['/usr/X11/include'] scons: `.' is up to date.