X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senfscons%2FMainpage.dox;h=5c81984000efaba18090b24acf9fb652e2040876;hb=80c6cb7ba9ad7776824c84809f422209adf27331;hp=7a84c7c31f589a9af61eff48a5b6b21f61b28ecf;hpb=63b650afb727cce067817ce9451eecb932446bf3;p=senf.git diff --git a/senfscons/Mainpage.dox b/senfscons/Mainpage.dox index 7a84c7c..5c81984 100644 --- a/senfscons/Mainpage.dox +++ b/senfscons/Mainpage.dox @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institute for Open Communication Systems (FOKUS) -// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -34,6 +34,61 @@ namespace senfscons { of pre- and postprocessing (which is integrated with the provided Doxygen builder) to fix some doxygen problems and generate a (IMHO) more readable layout. + \section senfutil Building Projects using SENF + + When building projects using senf, SENFSCons has a very simple helper module \ref senfutil to + make the building of libraries utilizing senf simpler: + \code + import sys + sys.path.extend(('senf/senfscons','/usr/lib/senf/senfscons')) + import os.path, glob, senfutil + + env = Environment() + + senfutil.SetupForSENF( env ) + + env.Append( + + LIBS = [ ], + CXXFLAGS = [ '-Wall', '-Woverloaded-virtual' ], + LINKFLAGS = [ ], + + CXXFLAGS_debug = [ ], + LINKFLAGS_debug = [ ], + LOGLEVELS_debug = [ 'senf::log::Debug||VERBOSE' ], + + CXXFLAGS_final = [ '-O3' ], + LINKFLAGS_final = [ ], + LOGLEVELS_final = [ ], + + SENF_BUILDOPTS = [ ], + + ) + + env.Default( + env.Program( target = 'udpforward', + source = glob.glob('*.cc') ) + ) + + env.Clean(DEFAULT_TARGETS, [ 'udpforward.log', 'udpforward.pid' ]) + \endcode + + This example builds a simple binary from a number of source files (all '.cc' files). It links + against the SENF library and automatically sets all the correct compiler options using + senfutil.SetupForSENF( env ). + + This script automatically uses a SENF installation either symlinked or imported into the current + project in directory 'senf' or, if this directory does not exist, a globaly installed SENF. A + locally installed SENF is automatically recompiled if needed. Parallel building is also + supported. + + This script automatically supports the \c final and \c LOGLEVELS command line parameters. The + LOGLEVELS parameter uses a much more readable syntax than SENF_LOG_CONF: +
+    $ scons -j2 final=1 \
+          LOGLEVELS='senf::log::Debug||IMPORTANT myapp::Transactions|mytrans::Area|VERBOSE'
+    
+ \section layout The Project Layout A Project using the SENFSCons infrastructure will always use a consistent directory layout. The