[Scons-users] SCon example for common build scenario

Andrew Featherstone andrew.featherstone at gmail.com
Sat Jun 14 10:24:02 EDT 2014


On 14/06/14 13:49, ronex chako wrote:
> Hello Andrew & William,
>
> Thanks for sharing the example and all the suggestion/pointers on my 
> queries.
> I am comparing build approach between two build-tools (SCons and 
> CMake). For this I am trying few examples and for CMake I have already 
> implemented the same scenario.
>
> Due to some limited amount of time on hand, I could not devote 
> required amount of time in understanding and reading SCons user guide 
> and directly started with the example, As SCons implements looks more 
> like a python script.
>
> Your suggestion will definietly help me in implementing the scenario I 
> mentioned. I'd would be very greatful if either of you or scons-users 
> help me with the entire example in elegant way.. As initially it's be 
> difficult for me and possibility brings a chances of mistakes/errors.
>
> If possible, Please Kindly help with elegant and entire solution for 
> my problem,  I am sure this is very general scenario and must have 
> been implemented by someone before.
>
>
> On Saturday, 14 June 2014 4:52 AM, Andrew Featherstone 
> <andrew.featherstone at gmail.com> wrote:
>
>
> On 13/06/14 16:49, ronex chako wrote:
>> I just started learning scon build tools But could not find any 
>> example which could describe the basic build scenario as mentioned below:
>> ||  module_1:                               |  module_2
>>    |_ src|_ src
>>      |_ a.cpp|_ c.cpp
>>      |_ b.cpp|_ d.cpp
>>    |_ include|_ include
>>      |_ a.h|_ c.h
>>      |_ b.h|_ d.h
>>    |_ test
>>      |_ test_1
>>      |_ test_2|
>> Here |module_1| depends on the library created from |module_2|I want 
>> to implement SCon makefiles for different *release and debug build* 
>> which can work for platforms like *Windows and Linux* and implement 
>> the task as mentioned below:
>>
>> 1.
>>     SCon should build sources in release(build/release) and
>>     debug(build/debug) mode, For debug mode it must use appropriate
>>     flags depending on the OS.
>> 2.
>>     Running scons inside |module_1| it should first search for
>>     |libmodule_2.(a/so)| (can be either shared or static library
>>     which needs to be decide from scon environment variable/flag), if
>>     not present then build it (How this kind of dependencies cane be
>>     implied in scons and resolved in an elegant way ?)
>> 3.
>>     If |libmodules_2| is found or in case if not found then after
>>     building it, it should later build |module_2|.
>> 4.
>>     How can I add regression target in |module_1| to run all the test
>>     cases ?
>> 5.
>>     Where can I place and implement Sconstruct and SConscript files
>>     for above scenario.. i.e. Can it be done using some top level
>>     SConstruct file and SConscript in |module_1| and |module_2| ?
>> 6.
>>     How can I specify the release and debug directories names based
>>     on the tools used by scons ? i.e if it uses gcc version 4.2 then
>>     |build_gcc_v_4.2| or |release_gcc_v_4.|.
>>
>>
>> Kindly help me with some examples, or solution for the above 
>> scenario... Thanks in advance.
>> I heartily appreciate any pointers or help.
>>
>>
>> Regards,
>> Ronex
>>
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org  <mailto:Scons-users at scons.org>
>> http://four.pairlist.net/mailman/listinfo/scons-users
> Oops, here's a change to my earlier reply
> - include_dirs.append(Dir(os.path.join('include', entry)))
> +        include_dirs.append(Dir(os.path.join(entry, 'include')))
>
> New example output:
>
> $ scons -Q
> scons: building associated VariantDir targets: build/debug_gcc_v_4.8.2 
> build/release_gcc_v_4.8.2
> gcc -o build/release_gcc_v_4.8.2/module_1/src/foo.o -c -O2 
> -Imodule_1/include module_1/src/foo.c
> gcc -o build/debug_gcc_v_4.8.2/module_1/src/foo.o -c -g 
> -Imodule_1/include module_1/src/foo.c
> ar rc build/debug_gcc_v_4.8.2/libmodule_1.a 
> build/debug_gcc_v_4.8.2/module_1/src/foo.o
> ranlib build/debug_gcc_v_4.8.2/libmodule_1.a
>
> and for completeness
> $ ls module_1/*/
> module_1/include/:
> foo.h
>
> module_1/src/:
> foo.c
>
> $ cat module_1/src/foo.c
> #include <foo.h>
>
> int foo_bar(void)
> {
>     int a = 1;
>     return a;
> }
>
> Andrew
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> http://four.pairlist.net/mailman/listinfo/scons-users
>
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> http://four.pairlist.net/mailman/listinfo/scons-users
Hi Ronex,

I'm not quite sure I understand what you're looking for. You've 
mentioned that you want to compare CMake and SCons and already have 
examples for the former, but you also don't have time to read the SCons 
literature (which really is very comprehensive and full of concise 
working examples). SCons* files _are_ python scripts; that's absolutely 
key (and great) 
http://www.scons.org/doc/2.3.1/HTML/scons-user.html#idp58648.

It's hard for people to help when the problem isn't tightly defined. Are 
you trying to say that you don't know python? If so, I wouldn't worry 
about that. Have you read the sections kindly highlight by William? 
Which parts of the documentation were confusing? Have you run my example 
files? Did you get a result you didn't expect? If so, what's 
missing/incomplete/incorrect? Perhaps you can describe the output of 
your CMake based build system and how it differs from what this SCons 
based example provides.

Regards,
Andrew
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20140614/222e005e/attachment-0001.html>


More information about the Scons-users mailing list