[Scons-users] SCon example for common build scenario

ronex chako ronex_89 at yahoo.in
Sat Jun 14 08:49:30 EDT 2014


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_2I 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 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
http://four.pairlist.net/mailman/listinfo/scons-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20140614/f2e91bbf/attachment.html>


More information about the Scons-users mailing list