[Scons-users] SCon example for common build scenario
Andrew Featherstone
andrew.featherstone at gmail.com
Fri Jun 13 19:21:56 EDT 2014
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
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://four.pairlist.net/pipermail/scons-users/attachments/20140614/2af891ba/attachment.html>
More information about the Scons-users
mailing list