[Bf-committers] Questions about SCons
Tron Thomas
tron.thomas at verizon.net
Sat Jul 8 19:03:36 CEST 2006
I have been trying to using SCons to create a debug build of Blender
on Mac OS X, and I have some questions I'm hoping I can get some
answers to.
In general SCons works great for building. All someone needs to do
is type a cammand and then wait for the build to complete. Compared
to what I've had to go through to get Blender to build using GNU
make, this clearly a much simpler and easier approach.
For as nice as this is there are some problems, and I'm wondering how
well these problems are understood and what action is being taken to
corect them.
For example, modifying a single file requires a build from the root
of the source. This means that SCons has to check every build target
to make sure its up to date. This make rebuilding for a simple code
change slow.
Even worse is the fact SCons does not realize that targets need to be
rebuilt when source files are modified. I found that the object
files resulting from the compliation of the changed source files must
be manually deleted for SCons to realize the files to be re-compiled.
What can someone do to avoid these types issues when building with
SCons?
Even more important, are the difficulties of trying to create a
debuggable program in the first place. The build output doesn't say
much about what options are being applied to compiled and linked
files. Its hard to know things like whether the final result will
contain debug information or not. Also knowing what it takes to
change the build options is not obvious.
The documentation on the Internet for changing build options says
that the first time scons is started, the file config.opts is
generated. To my knowledge, this is not correct. The config.opts
file is never created. Creating a config.opts file and adding
options to it also has no affect on the build results.
Paying attention to the build output and some investigation of the
main SConstruct script revealed that the actual way to modify build
settings is to create a file named user-config.py in the same
directory as that main SConstruct script. Adding entries like the
following to this user-config.py file can produce a debug build:
CCFLAGS.extend(['-g', '-O0'])
CXXFLAGS.extend(['-g', '-O0'])
Even after doing this, all was not right. Debugging the code
indicated that despite the fact that the user-config.py file
specified no optimization should be applied, the code does in fact
contain optimizations. Debugging optimized code can be tricky and
confusing.
So far I have been unable to find where these optimization options
are applied and how to eliminate them.
How can someone use SCons to create a debug build of Blender that
does not contain any optimizations?
More information about the Bf-committers
mailing list