Fetching Values From a Construction Environment

You can fetch individual construction variables using the normal syntax for accessing individual named items in a Python dictionary:

      env = Environment()
      print "CC is:", env['CC']
   

This example SConstruct file doesn't build anything, but because it's actually a Python script, it will print the value of $CC for us:

      % scons -Q
      CC is: cc
      scons: `.' is up to date.
   

A construction environment, however, is actually an object with associated methods, etc. If you want to have direct access to only the dictionary of construction variables, you can fetch this using the Dictionary method:

      env = Environment(FOO = 'foo', BAR = 'bar')
      dict = env.Dictionary()
      for key in ['OBJSUFFIX', 'LIBSUFFIX', 'PROGSUFFIX']:
          print "key = %s, value = %s" % (key, dict[key])
   

This SConstruct file will print the specified dictionary items for us on POSIX systems as follows:

      % scons -Q
      key = OBJSUFFIX, value = .o
      key = LIBSUFFIX, value = .a
      key = PROGSUFFIX, value = 
      scons: `.' is up to date.
   

And on Windows:

      C:\>scons -Q
      key = OBJSUFFIX, value = .obj
      key = LIBSUFFIX, value = .lib
      key = PROGSUFFIX, value = .exe
      scons: `.' is up to date.
   

If you want to loop through and print the values of all of the construction variables in a construction environment, the Python code to do that in sorted order might look something like:

      env = Environment()
      dict = env.Dictionary()
      keys = dict.keys()
      keys.sort()
      for key in keys:
          print "construction variable = '%s', value = '%s'" % (key, dict[key])