3.4. Specifying Single Files Vs. Lists of Files
Prev | Chapter 3. Less Simple Things to Do With Builds | Next

## 3.4. Specifying Single Files Vs. Lists of Files

You've now seen 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 can 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.

### Important

Although SCons functions are forgiving about whether or not you use a string vs. a list for a single file name, Python itself is stricter 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 | Up | Next
3.3. Making a list of files with `Glob` | Home | 3.5. Making Lists of Files Easier to Read