[Scons-users] Storing object files in different directory

Dirk Bächle tshortik at gmx.de
Sat Oct 11 12:12:47 EDT 2014


Hi Christopher,

On 11.10.2014 17:02, Christopher Dimech wrote:
> The problem I have is that I have two source directories,
> lib and utils. The directory utils is where the main program
> resides, lib is where the other fortran files exist. Where should
> the SConscript file reside?
>
> [...]
>
in general it makes sense to have an SConscript in each folder where 
your input files are, and a "module" (=program/library/...) gets built. 
This makes it easier to reference filenames within each "module", 
because these names are interpreted relative to the location of the 
current SConscript file.
So, in your case I'd have an SConscript in "lib":

   Import('env')
   env.Libary('mylib', Glob('*.f'))

and another one in "utils":

   Import('env')
   env.Append(LIBS=['mylib'])
   env.Append(LIBPATH=['../lib'])
   env.Program('botoh.x', Glob('*.f'))

. For being able to build both of these "modules" into a Variant dir, 
I'd then add another "SConscript" at top-level:

   SConscript('lib/SConscript')
   SConscript('utils/SConscript')

and finally call this SConscript from the top-level SConstruct with the 
"variant_dir=" option as:

   env = Environment(...)
   Export('env')
   SConscript('SConscript', variant_dir='build')


Best regards,

Dirk



More information about the Scons-users mailing list