Of course, you can always specify an absolute path name for a file--for example:
env = Environment() env.Program('prog', ['main.c', '/usr/joe/lib/foo1.c', 'foo2.c'])
Which, when executed, would yield:
% scons -Q
cc -o src/prog/foo2.o -c src/prog/foo2.c
cc -o src/prog/main.o -c src/prog/main.c
cc -o /usr/joe/lib/foo1.o -c /usr/joe/lib/foo1.c
cc -o src/prog/prog src/prog/main.o /usr/joe/lib/foo1.o src/prog/foo2.o
(As was the case with top-relative path names,
notice that the /usr/joe/lib/foo1.o
object file
is built in the same directory as its source file.
See Chapter 15, Separating Source and Build Directories, below,
for information about
how to build the object file in a different subdirectory.)