Specifying Single Files Vs. Lists of Files

SCons User Guide 0.98.0
Prev | Chapter 3. Less Simple Things to Do With Builds | Next

# 3.3. Specifying Single Files Vs. Lists of Files

We've now shown you two ways to specify the source for a program, one with a list of files:

           Program('hello', ['file1.c', 'file2.c'])

And one with a single file:

           Program('hello', 'hello.c')

You could actually put a single file name in a list, too, which you might prefer just for the sake of consistency:

           Program('hello', ['hello.c'])

SCons functions will accept a single file name in either form. In fact, internally, SCons treats all input as lists of files, but allows you to omit the square brackets to cut down a little on the typing when there's only a single file name.

| Although SCons functions are forgiving about whether or not you use a string vs. a list for a single file name, Python itself is more strict about treating lists and strings differently. So where SCons allows either a string or list:
           # The following two calls both work correctly:
           Program('program1', 'program1.c')
           Program('program2', ['program2.c'])
Trying to do "Python things" that mix strings and lists will cause errors or lead to incorrect results:
           common_sources = ['file1.c', 'file2.c']

           # THE FOLLOWING IS INCORRECT AND GENERATES A PYTHON ERROR
           # BECAUSE IT TRIES TO ADD A STRING TO A LIST:
           Program('program1', common_sources + 'program1.c')

           # The following works correctly, because it's adding two
           # lists together to make another list.
           Program('program2', common_sources + ['program2.c'])

Prev | Home | Next
Compiling Multiple Source Files | Up | Making Lists of Files Easier to Read