Expanding Values From a Construction Environment

Another way to get information from a construction environment. is to use the subst method on a string containing $-expansions of construction variable names. As a simple example, the example from the previous section that used env['CC'] to fetch the value of CC could also be written as:

     env = Environment()
     print "CC is:", env.subst('$CC')
   

The real advantage of using subst to expand strings is that construction variables in the result get re-expanded until there are no expansions left in the string. So a simple fetch of a value like $CCCOM:

     env = Environment(CCFLAGS = '-DFOO')
     print "CCCOM is:", env['CCCOM']
   

Will print the unexpanded value of CCCOM, showing us the construction variables that still need to be expanded:

     % scons -Q
     CCCOM is: $CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES
     scons: `.' is up to date.
   

Calling the subst method on $CCOM, however:

     env = Environment(CCFLAGS = '-DFOO')
     print "CCCOM is:", env.subst('$CCCOM')
   

Will recursively expand all of the $-prefixed construction variables, showing us the final output:

     % scons -Q
     CCCOM is: gcc -DFOO -c -o
     scons: `.' is up to date.
   

(Note that because we're not expanding this in the context of building something there are no target or source files for $TARGET and $SOURCES to expand.