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'])
|
|