[Scons-users] Re-2: Re-2: Code generation dependency problem

Dirk Bächle tshortik at gmx.de
Mon Dec 8 14:22:32 EST 2014


Hi Roman,



 > Apart from that, after reading the thread, I'm a bit confused why 
scons finds the generated *.cpp file in my case.
 > I'm confused because I collect the source files with the Glob() 
function, but the generated file actually does not
 > already exist when the parsing is done (this is my understanding at 
least).
 >
 > What's the magic that is happening here?

there's no real magic involved. SCons internally keeps track of all 
"Nodes" (targets/sources) in a separate structure, which I like to refer 
to as Virtual File System.
A "Node" is an abstraction of a file or directory, and it's used to 
track all information about it...like whether it's up-to-date, how it's 
rebuilt if required, and so on. The dependencies between targets and 
sources are defined on this "net of nodes", if you will...and that's why 
the files don't have to exist physically in the "reading phase" of an 
SCons run. There are exceptions, like when you generate a C header that 
then includes even more headers. That's handled during the "build 
phase", because you obviously can't scan the header file unles it 
physically exists.
But for the simple dependencies target->source, that get defined by 
calling a Builder (which internally invokes its Emitter), SCons simply 
knows that the target Node "will exist at some point in time later 
on"...so you can already link a dependency to it, or use it as a source 
file for another build step.

Am I right in assuming that you're German? Then you might want to have a 
look at my talk 
http://pyvideo.org/video/2409/scons-software-bauen-in-python (see also 
the http://www.scons.org/wiki/TalksAndSlides page for links to the 
slides). It contains a graphic that shows the processing inside SCons in 
some detail.

Regards,

Dirk

P.S.: The video to my latest talk ( 
http://www.pycon.fr/2014/schedule/presentation/25/ ) hasn't been 
published yet. :(




More information about the Scons-users mailing list