Although this is usually helpful and what you want,
it might be frustrating if &SCons;
doesn't set certain variables that you
- expect to be sit.
+ expect to be set.
In situations like this,
it's sometimes helpful to use the
construction environment &Dump; method
<screen>
% <userinput>scons</userinput>
scons: Reading SConscript files ...
- { 'BUILDERS': {'InstallAs': <function InstallAsBuilderWrapper at 0xb23a28>, 'Install': <function InstallBuilderWrapper at 0xb1b7d0>},
+ { 'BUILDERS': {'InstallAs': <function InstallAsBuilderWrapper at 0x700000>, 'Install': <function InstallBuilderWrapper at 0x700000>},
'CONFIGUREDIR': '#/.sconf_temp',
'CONFIGURELOG': '#/config.log',
'CPPSUFFIXES': [ '.c',
'.spp',
'.SPP'],
'DSUFFIXES': ['.d'],
- 'Dir': <SCons.Defaults.Variable_Method_Caller instance at 0xa1eb48>,
- 'Dirs': <SCons.Defaults.Variable_Method_Caller instance at 0xa1eb90>,
+ 'Dir': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
+ 'Dirs': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'ENV': {'PATH': '/usr/local/bin:/opt/bin:/bin:/usr/bin'},
- 'ESCAPE': <function escape at 0xb1fa28>,
- 'File': <SCons.Defaults.Variable_Method_Caller instance at 0xa1ebd8>,
+ 'ESCAPE': <function escape at 0x700000>,
+ 'File': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'IDLSUFFIXES': ['.idl', '.IDL'],
- 'INSTALL': <function copyFunc at 0xb23aa0>,
+ 'INSTALL': <function copyFunc at 0x700000>,
'LATEXSUFFIXES': ['.tex', '.ltx', '.latex'],
'LIBPREFIX': 'lib',
'LIBPREFIXES': '$LIBPREFIX',
'PLATFORM': 'posix',
'PROGPREFIX': '',
'PROGSUFFIX': '',
- 'PSPAWN': <function piped_env_spawn at 0xb23230>,
- 'RDirs': <SCons.Defaults.Variable_Method_Caller instance at 0xa1ec20>,
+ 'PSPAWN': <function piped_env_spawn at 0x700000>,
+ 'RDirs': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'SCANNERS': [],
'SHELL': 'sh',
'SHLIBPREFIX': '$LIBPREFIX',
'SHLIBSUFFIX': '.so',
'SHOBJPREFIX': '$OBJPREFIX',
'SHOBJSUFFIX': '$OBJSUFFIX',
- 'SPAWN': <function spawnvpe_spawn at 0xb1f7d0>,
- 'TEMPFILE': <class SCons.Platform.TempFileMunge at 0xa4e170>,
+ 'SPAWN': <function spawnvpe_spawn at 0x700000>,
+ 'TEMPFILE': <class SCons.Platform.TempFileMunge at 0x700000>,
'TEMPFILEPREFIX': '@',
'TOOLS': ['install', 'install'],
'_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
'_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
'_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
'__RPATH': '$_RPATH',
- '_concat': <function _concat at 0xa3d398>,
- '_defines': <function _defines at 0xa3d500>,
- '_stripixes': <function _stripixes at 0xa3d488>}
+ '_concat': <function _concat at 0x700000>,
+ '_defines': <function _defines at 0x700000>,
+ '_stripixes': <function _stripixes at 0x700000>}
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
<screen>
C:\><userinput>scons</userinput>
scons: Reading SConscript files ...
- { 'BUILDERS': {'RES': <SCons.Builder.BuilderBase instance at 0xb39518>, 'Object': <SCons.Builder.CompositeBuilder instance at 0xb4a710>, 'InstallAs': <function InstallAsBuilderWrapper at 0xb45c08>, 'PCH': <SCons.Builder.BuilderBase instance at 0xb1cef0>, 'Install': <function InstallBuilderWrapper at 0xb1b7d0>, 'SharedObject': <SCons.Builder.CompositeBuilder instance at 0xb4aa28>, 'StaticObject': <SCons.Builder.CompositeBuilder instance at 0xb4a710>},
+ { 'BUILDERS': {'RES': <SCons.Builder.BuilderBase instance at 0x700000>, 'Object': <SCons.Builder.CompositeBuilder instance at 0x700000>, 'InstallAs': <function InstallAsBuilderWrapper at 0x700000>, 'PCH': <SCons.Builder.BuilderBase instance at 0x700000>, 'Install': <function InstallBuilderWrapper at 0x700000>, 'SharedObject': <SCons.Builder.CompositeBuilder instance at 0x700000>, 'StaticObject': <SCons.Builder.CompositeBuilder instance at 0x700000>},
'CC': 'cl',
- 'CCCOM': <SCons.Action.FunctionAction instance at 0xb4c290>,
+ 'CCCOM': <SCons.Action.FunctionAction instance at 0x700000>,
'CCCOMFLAGS': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET $CCPCHFLAGS $CCPDBFLAGS',
'CCFLAGS': ['/nologo'],
'CCPCHFLAGS': ['${(PCH and "/Yu%s /Fp%s"%(PCHSTOP or "",File(PCH))) or ""}'],
'CXXFILESUFFIX': '.cc',
'CXXFLAGS': ['$CCFLAGS', '$(', '/TP', '$)'],
'DSUFFIXES': ['.d'],
- 'Dir': <SCons.Defaults.Variable_Method_Caller instance at 0xa1eb48>,
- 'Dirs': <SCons.Defaults.Variable_Method_Caller instance at 0xa1eb90>,
+ 'Dir': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
+ 'Dirs': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'ENV': { 'INCLUDE': 'C:\\Program Files\\Microsoft Visual Studio/VC98\\include',
'LIB': 'C:\\Program Files\\Microsoft Visual Studio/VC98\\lib',
'PATH': 'C:\\Program Files\\Microsoft Visual Studio\\Common\\tools\\WIN95;C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\bin;C:\\Program Files\\Microsoft Visual Studio\\Common\\tools;C:\\Program Files\\Microsoft Visual Studio/VC98\\bin',
'PATHEXT': '.COM;.EXE;.BAT;.CMD',
'SystemRoot': 'C:/WINDOWS'},
- 'ESCAPE': <function escape at 0xb24848>,
- 'File': <SCons.Defaults.Variable_Method_Caller instance at 0xa1ebd8>,
+ 'ESCAPE': <function escape at 0x700000>,
+ 'File': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'IDLSUFFIXES': ['.idl', '.IDL'],
'INCPREFIX': '/I',
'INCSUFFIX': '',
- 'INSTALL': <function copyFunc at 0xb45c80>,
+ 'INSTALL': <function copyFunc at 0x700000>,
'LATEXSUFFIXES': ['.tex', '.ltx', '.latex'],
'LIBPREFIX': '',
'LIBPREFIXES': ['$LIBPREFIX'],
'PLATFORM': 'win32',
'PROGPREFIX': '',
'PROGSUFFIX': '.exe',
- 'PSPAWN': <function piped_spawn at 0xb20488>,
+ 'PSPAWN': <function piped_spawn at 0x700000>,
'RC': 'rc',
'RCCOM': '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES',
'RCFLAGS': [],
- 'RDirs': <SCons.Defaults.Variable_Method_Caller instance at 0xa1ec20>,
+ 'RDirs': <SCons.Defaults.Variable_Method_Caller instance at 0x700000>,
'SCANNERS': [],
'SHCC': '$CC',
- 'SHCCCOM': <SCons.Action.FunctionAction instance at 0xb4c320>,
+ 'SHCCCOM': <SCons.Action.FunctionAction instance at 0x700000>,
'SHCCFLAGS': ['$CCFLAGS'],
'SHCFLAGS': ['$CFLAGS'],
'SHCXX': '$CXX',
'SHLIBSUFFIX': '.dll',
'SHOBJPREFIX': '$OBJPREFIX',
'SHOBJSUFFIX': '$OBJSUFFIX',
- 'SPAWN': <function spawn at 0xb247d0>,
+ 'SPAWN': <function spawn at 0x700000>,
'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1,
- 'TEMPFILE': <class SCons.Platform.TempFileMunge at 0xa4e170>,
+ 'TEMPFILE': <class SCons.Platform.TempFileMunge at 0x700000>,
'TEMPFILEPREFIX': '@',
'TOOLS': ['msvc', 'install', 'install'],
'_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__)}',
'_CPPINCFLAGS': '$( ${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
'_LIBDIRFLAGS': '$( ${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)',
'_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}',
- '_concat': <function _concat at 0xa3d398>,
- '_defines': <function _defines at 0xa3d500>,
- '_stripixes': <function _stripixes at 0xa3d488>}
+ '_concat': <function _concat at 0x700000>,
+ '_defines': <function _defines at 0x700000>,
+ '_stripixes': <function _stripixes at 0x700000>}
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
In a real-life situation,
the construction environments will
likely contain a great many more variables.
+ Also note that we've massaged the example output above
+ to make the memory address of all objects a constant 0x700000.
+ In reality, you would see a different hexadecimal
+ number for each object.
</para>
cc -o f3.o -c -I. f3.c
cc -o prog f1.o f2.o f3.o
+-.
- +--
+-SConstruct
+-f1.c
+-f1.o
H = no cache
[E b ]+-.
- [ ] +--
- [E ] +-SConstruct
- [E ] +-f1.c
+ [E C ] +-SConstruct
+ [E C ] +-f1.c
[E B C ] +-f1.o
- [E ] | +-f1.c
- [E ] | +-inc.h
- [E ] +-f2.c
+ [E C ] | +-f1.c
+ [E C ] | +-inc.h
+ [E C ] +-f2.c
[E B C ] +-f2.o
- [E ] | +-f2.c
- [E ] | +-inc.h
- [E ] +-f3.c
+ [E C ] | +-f2.c
+ [E C ] | +-inc.h
+ [E C ] +-f3.c
[E B C ] +-f3.o
- [E ] | +-f3.c
- [E ] | +-inc.h
- [E ] +-inc.h
+ [E C ] | +-f3.c
+ [E C ] | +-inc.h
+ [E C ] +-inc.h
[E B C ] +-prog
[E B C ] +-f1.o
- [E ] | +-f1.c
- [E ] | +-inc.h
+ [E C ] | +-f1.c
+ [E C ] | +-inc.h
[E B C ] +-f2.o
- [E ] | +-f2.c
- [E ] | +-inc.h
+ [E C ] | +-f2.c
+ [E C ] | +-inc.h
[E B C ] +-f3.o
- [E ] +-f3.c
- [E ] +-inc.h
+ [E C ] +-f3.c
+ [E C ] +-inc.h
</screen>
<para>
cc -o f3.o -c -I. f3.c
cc -o prog f1.o f2.o f3.o
+-.
+ +-f1.o
+ +-f2.o
+ +-f3.o
+ +-prog
+ +-f1.o
+ +-f2.o
+ +-f3.o
</screen>
<para>
cc -o prog2.o -c -I. prog2.c
cc -o prog2 prog2.o -L. -lfoo
+-.
- +--
+-SConstruct
+-f1.c
+-f1.o
cc -o prog2.o -c -I. prog2.c
cc -o prog2 prog2.o -L. -lfoo
+-.
- +--
+-SConstruct
+-f1.c
+-f1.o
scons: *** Source `prog.c' not found, needed by target `prog.o'. Stop.
scons: internal stack trace:
File "bootstrap/src/engine/SCons/Job.py", line 114, in start
+ File "bootstrap/src/engine/SCons/Script/Main.py", line 157, in prepare
File "bootstrap/src/engine/SCons/Taskmaster.py", line 169, in prepare
- File "bootstrap/src/engine/SCons/Node/FS.py", line 2220, in prepare
- File "bootstrap/src/engine/SCons/Node/__init__.py", line 819, in prepare
+ File "bootstrap/src/engine/SCons/Node/FS.py", line 2568, in prepare
+ File "bootstrap/src/engine/SCons/Node/__init__.py", line 349, in prepare
</screen>
<para>
% <userinput>scons -Q --taskmastertrace=- prog</userinput>
Taskmaster: 'prog': children:
['prog.o']
- waiting on unstarted children:
+ waiting on unfinished children:
['prog.o']
+ Taskmaster: 'prog.o': children:
+ ['inc.h', 'prog.c']
+ waiting on unfinished children:
+ ['inc.h', 'prog.c']
+ Taskmaster: 'prog.c': evaluating prog.c
+ Taskmaster: 'inc.h': evaluating inc.h
Taskmaster: 'prog.o': children:
['inc.h', 'prog.c']
evaluating prog.o
['prog.o']
evaluating prog
cc -o prog prog.o
- Taskmaster: 'prog': already handled (executed)
</screen>
<para>