5.3. Printing Node File Names

One of the most common things you can do with a Node is use it to print the file name that the node represents. Keep in mind, though, that because the object returned by a builder call is a list of Nodes, you must use Python subscripts to fetch individual Nodes from the list. For example, the following SConstruct file:

      hello_c = File('hello.c')

      classes = Dir('classes')
      Java(classes, 'src')

      object_list = Object('hello.c')
      program_list = Program(object_list)
      print "The object file is:", object_list[0]
      print "The program file is:", program_list[0]

Would print the following file names on a POSIX system:

      % scons -Q
      The object file is: hello.o
      The program file is: hello
      cc -o hello.o -c hello.c
      cc -o hello hello.o

And the following file names on a Windows system:

      C:\>scons -Q
      The object file is: hello.obj
      The program file is: hello.exe
      cl /Fohello.obj /c hello.c /nologo
      link /nologo /OUT:hello.exe hello.obj

Note that in the above example, the object_list[0] extracts an actual Node object from the list, and the Python print statement converts the object to a string for printing.