From 84c6f9729dbbc175431874957d0654310410bd6f Mon Sep 17 00:00:00 2001 From: Luca Falavigna Date: Thu, 10 Feb 2011 23:18:10 +0100 Subject: Imported Upstream version 2.0.1 --- doc/user/tasks.in | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) (limited to 'doc/user/tasks.in') diff --git a/doc/user/tasks.in b/doc/user/tasks.in index 2945d1c..8842dcd 100644 --- a/doc/user/tasks.in +++ b/doc/user/tasks.in @@ -29,7 +29,7 @@ on as they become more complex. Most build tools have special purpose constructs for performing these tasks, but since &SConscript; files are &Python; scripts, you can use more flexible built-in &Python; services to perform these tasks. This appendix lists a number of these -tasks and how to implement them in &Python;. +tasks and how to implement them in &Python; and &SCons;. @@ -79,3 +79,68 @@ output output = os.popen(command).read() + + +Generating source code: how code can be generated and used by SCons + + + +The Copy builders here could be any arbitrary shell or python function +that produces one or more files. This example shows how to create +those files and use them in &SCons;. + + + + + +#### SConstruct +env = Environment() +env.Append(CPPPATH = "#") + +## Header example +env.Append(BUILDERS = + {'Copy1' : Builder(action = 'cat < $SOURCE > $TARGET', + suffix='.h', src_suffix='.bar')}) +env.Copy1('test.bar') # produces test.h from test.bar. +env.Program('app','main.cpp') # indirectly depends on test.bar + +## Source file example +env.Append(BUILDERS = + {'Copy2' : Builder(action = 'cat < $SOURCE > $TARGET', + suffix='.cpp', src_suffix='.bar2')}) +foo = env.Copy2('foo.bar2') # produces foo.cpp from foo.bar2. +env.Program('app2',['main2.cpp'] + foo) # compiles main2.cpp and foo.cpp into app2. + + + +#include "test.h" + + +// nothing here + + +//// main2.cpp + + +// nothing here + + + + + +Where main.cpp looks like this: + + + + + + + +produces this: + + + + scons -Q + + + -- cgit v1.2.3