diff options
Diffstat (limited to 'doc/man/scons.xml')
-rw-r--r-- | doc/man/scons.xml | 58 |
1 files changed, 37 insertions, 21 deletions
diff --git a/doc/man/scons.xml b/doc/man/scons.xml index 57d413f..aabd957 100644 --- a/doc/man/scons.xml +++ b/doc/man/scons.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Copyright (c) 2001 - 2016 The SCons Foundation + Copyright (c) 2001 - 2017 The SCons Foundation Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -75,8 +75,8 @@ <refmeta> <refentrytitle>SCONS</refentrytitle> <manvolnum>1</manvolnum> -<refmiscinfo class='source'>SCons 2.5.1</refmiscinfo> -<refmiscinfo class='manual'>SCons 2.5.1</refmiscinfo> +<refmiscinfo class='source'>SCons 3.0.0</refmiscinfo> +<refmiscinfo class='manual'>SCons 3.0.0</refmiscinfo> </refmeta> <refnamediv id='name'> <refname>scons</refname> @@ -2187,6 +2187,22 @@ platform name when the Environment is constructed. Changing the PATH variable after the Environment is constructed will not cause the tools to be redetected.</para> +<para> One feature now present within Scons is the ability to have nested tools. +Tools which can be located within a subdirectory in the toolpath. +With a nested tool name the dot represents a directory seperator</para> + +<programlisting> +# namespaced builder +env = Environment(ENV = os.environ, tools = ['SubDir1.SubDir2.SomeTool']) +env.SomeTool(targets, sources) + +# Search Paths +# SCons\Tool\SubDir1\SubDir2\SomeTool.py +# SCons\Tool\SubDir1\SubDir2\SomeTool\__init__.py +# .\site_scons\site_tools\SubDir1\SubDir2\SomeTool.py +# .\site_scons\site_tools\SubDir1\SubDir2\SomeTool\__init__.py +</programlisting> + <para>SCons supports the following tool specifications out of the box:</para> <!-- '\""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" --> @@ -2483,7 +2499,7 @@ foo = Object('foo.c') bar = Object('bar.c') objects = ['begin.o'] + foo + ['middle.o'] + bar + ['end.o'] for object in objects: - print str(object) + print(str(object)) </literallayout> <para>Or you can use the @@ -2497,7 +2513,7 @@ foo = Object('foo.c') bar = Object('bar.c') objects = Flatten(['begin.o', foo, 'middle.o', bar, 'end.o']) for object in objects: - print str(object) + print(str(object)) </literallayout> <para>Note also that because Builder calls return @@ -2541,7 +2557,7 @@ function:</para> <literallayout class="monospaced"> bar_obj_list = env.StaticObject('bar.c', CPPDEFINES='-DBAR') -print "The path to bar_obj is:", str(bar_obj_list[0]) +print("The path to bar_obj is:", str(bar_obj_list[0])) </literallayout> <para>Note again that because the Builder call returns a list, @@ -2842,10 +2858,10 @@ of the tuple, respectively.</para> <para>Example:</para> <literallayout class="monospaced"> -print "first keyword, value =", ARGLIST[0][0], ARGLIST[0][1] -print "second keyword, value =", ARGLIST[1][0], ARGLIST[1][1] +print("first keyword, value =", ARGLIST[0][0], ARGLIST[0][1]) +print("second keyword, value =", ARGLIST[1][0], ARGLIST[1][1]) third_tuple = ARGLIST[2] -print "third keyword, value =", third_tuple[0], third_tuple[1] +print("third keyword, value =", third_tuple[0], third_tuple[1]) for key, value in ARGLIST: # process key and value </literallayout> @@ -2913,7 +2929,7 @@ for additional information.</para> <literallayout class="monospaced"> if 'foo' in BUILD_TARGETS: - print "Don't forget to test the `foo' program!" + print("Don't forget to test the `foo' program!") if 'special/program' in BUILD_TARGETS: SConscript('special') </literallayout> @@ -2951,7 +2967,7 @@ is explicitly being built.</para> <literallayout class="monospaced"> if 'foo' in COMMAND_LINE_TARGETS: - print "Don't forget to test the `foo' program!" + print("Don't forget to test the `foo' program!") if 'special/program' in COMMAND_LINE_TARGETS: SConscript('special') </literallayout> @@ -2975,9 +2991,9 @@ function to get at the path name for each Node.</para> <para>Example:</para> <literallayout class="monospaced"> -print str(DEFAULT_TARGETS[0]) +print(str(DEFAULT_TARGETS[0])) if 'foo' in map(str, DEFAULT_TARGETS): - print "Don't forget to test the `foo' program!" + print("Don't forget to test the `foo' program!") </literallayout> </listitem> </varlistentry> @@ -2990,13 +3006,13 @@ list change on on each successive call to the function:</para> <literallayout class="monospaced"> -print map(str, DEFAULT_TARGETS) # originally [] +print(map(str, DEFAULT_TARGETS)) # originally [] Default('foo') -print map(str, DEFAULT_TARGETS) # now a node ['foo'] +print(map(str, DEFAULT_TARGETS)) # now a node ['foo'] Default('bar') -print map(str, DEFAULT_TARGETS) # now a node ['foo', 'bar'] +print(map(str, DEFAULT_TARGETS)) # now a node ['foo', 'bar'] Default(None) -print map(str, DEFAULT_TARGETS) # back to [] +print(map(str, DEFAULT_TARGETS)) # back to [] </literallayout> <para>Consequently, be sure to use @@ -3525,7 +3541,7 @@ a shared library, only that the compilation (not link) succeeds.</para> env = Environment() conf = Configure( env ) if not conf.CheckCHeader( 'math.h' ): - print 'We really need math.h!' + print('We really need math.h!') Exit(1) if conf.CheckLibWithHeader( 'qt', 'qapp.h', 'c++', 'QApplication qapp(0,0);' ): @@ -3815,7 +3831,7 @@ int main(int argc, char **argv) { env = Environment() conf = Configure( env, custom_tests = { 'CheckQt' : CheckQt } ) if not conf.CheckQt('/usr/lib/qt'): - print 'We really need qt!' + print('We really need qt!') Exit(1) env = conf.Finish() </programlisting> @@ -3995,7 +4011,7 @@ not configured.</para> <literallayout class="monospaced"> env = Environment(variables=vars) for key, value in vars.UnknownVariables(): - print "unknown variable: %s=%s" % (key, value) + print("unknown variable: %s=%s" % (key, value)) </literallayout> </listitem> @@ -4400,7 +4416,7 @@ File('foo.c').srcnode().path # source path of the given source file. # Builders also return File objects: foo = env.Program('foo.c') -print "foo will be built in %s"%foo.path +print("foo will be built in %s"%foo.path) </literallayout> <para>A |