[Scons-users] Building SDL 2 with SCons on Linux
Davide Coppola
vivaladav at gmail.com
Fri Mar 14 11:17:44 EDT 2014
Hey Dirk,
I'm glad you appreciated the post, thanks.
I have indeed a few comments, especially regarding your usage of the
> variant_dir feature.
>
> 1.) If your projects get bigger and you would perhaps like to create
> several (all?) variants with *one* call of SCons, here's what you could
> change: Create another SConscript, right beside your top-level SConstruct.
> It only contains the includes to the lower directories, so:
>
> Import('env')
> SConscript('src/libs/SDL2/SConscript', exports = 'env', variant_dir =
> 'build/' + env['mode'], src_dir = 'src', duplicate = 0)
> SConscript('src/game/SConscript', exports = 'env', variant_dir =
> 'build/' + env['mode'], src_dir = 'src', duplicate = 0)
>
> Then, set up single environments for the variants you'd like to create in
> your SConstruct:
>
> env = Environment(variables = vars)
> debugEnv = env.Clone()
> debugEnv.Append(CCFLAGS = ['-Wall', '-g', '-O0', '-DDEBUG'])
> debugEnv['mode'] = 'debug'
>
> ...
> profileEnv = env.Clone()
> profileEnv.Append(CCFLAGS = ['-Wall', '-pg', '-O0', '-DNDEBUG'])
> profileEnv['mode'] = 'profile'
>
> Now, you can do things like
>
> mode_env = {'debug' : debugEnv,
> 'release' : releaseEnv,
> 'profile' : profileEnv}
> for m in mode_env:
> SConscript('SConscript', exports={'env' : mode_env[m]})
>
> and get all variants at once.
>
I was aware of that (I probably saw something similar on the wiki), but I
prefer to be able to control which build is created at any time.
I'll keep your solution in mind though, as I could change my mind at some
point!
> 2.) As another minor point, in the SConscripts you create localEnvs via
> Clone(). This is okay, but when you then call localEnv.Program() (or any
> other builder that is defined within the localEnv environment) and
> additionally give parameters like LIBPATH to this call, this means that
> internally another Environment (a so called OverrideEnvironment) gets
> created.
> Doesn't really hurt, but it's actually unnecessary. You don't use the
> localEnv for anything else, so just set it up completely like for the other
> variables:
>
> localEnv.Append(CPPPATH=['#/src/libs/SDL2/include'])
> localEnv.Append(CCFLAGS = ['-D_REENTRANT'])
> localEnv.Append(LINKFLAGS=['-Wl,--no-undefined'])
> localEnv.Append(LIBS=['SDL2', 'pthread', 'm', 'dl', 'ts', 'pthread',
> 'rt'])
> localEnv.Append(LIBPATH=['../libs/SDL2'])
>
Wow, I wasn't aware of that!
I changed my scripts and updated the blog post with your suggestion, thanks
> Finally, feel free to add your project as snippet to our Wiki, under the
> "Recipes" section ( http://www.scons.org/wiki/SconsRecipes ) . We can
> always use more good examples like this one.
>
I'd like to, but the WIKI doesn't allow me to create an account... I get
the following error message when I try: "Unknown action newaccount."
Could you or someone else fix that?
Thanks again
--
Davide Coppola
*email:* vivaladav at gmail.com
*website:* http://www.davidecoppola.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://four.pairlist.net/pipermail/scons-users/attachments/20140314/e4ddf740/attachment.htm
More information about the Scons-users
mailing list