Branch for User's Guide work.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 28 Feb 2004 09:25:48 +0000 (09:25 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 28 Feb 2004 09:25:48 +0000 (09:25 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@910 fdb21ef1-2011-0410-befe-b5e4ea1792b1

14 files changed:
doc/user/builders-commands.sgml
doc/user/builders-writing.in
doc/user/builders-writing.sgml
doc/user/command-line.in
doc/user/command-line.sgml
doc/user/depends.in
doc/user/depends.sgml
doc/user/environments.sgml
doc/user/libraries.in
doc/user/libraries.sgml
doc/user/scanners.in
doc/user/scanners.sgml
doc/user/simple.in
doc/user/simple.sgml

index 64c81e52a26c989ee7b9b0c5440bd75ebebda509..49ba08dd074986d47a226de83486cc8bea65a43e 100644 (file)
@@ -71,7 +71,7 @@
 
   <programlisting>
      env = Environment()
-     env.Command('foo.out', 'foo.in', "sed 's/x/y/' < $SOURCE > $TARGET")
+     env.Command('foo.out', 'foo.in', "sed 's/x/y/' &lt; $SOURCE &gt; $TARGET")
   </programlisting>
 
   <literallayout>
index 50c91148eca1ece1707dd038dd92e11e649f7369..d68b872a37429bee791773be5a8a75baa88618ff 100644 (file)
@@ -221,7 +221,7 @@ This functionality could be invoked as in the following example:
 
     <scons_example name="ex2">
        <file name="SConstruct" printme="1">
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env = Environment(BUILDERS = {'Foo' : bld})
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -409,7 +409,7 @@ This functionality could be invoked as in the following example:
       the target or targets to be
       built by this builder function.
       The file names of these target(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -425,7 +425,7 @@ This functionality could be invoked as in the following example:
       the sources to be
       used by this builder function to build the targets.
       The file names of these source(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -542,7 +542,7 @@ This functionality could be invoked as in the following example:
       by the command or other action
       generated by this function.
       The file names of these source(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -560,7 +560,7 @@ This functionality could be invoked as in the following example:
       by the command or other action
       generated by this function.
       The file names of these target(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
index 796e19941e7a57e371c736528913ac0046feb9a2..4dddb55417402b8b3d88b79e69c995a5d2a61070 100644 (file)
@@ -207,7 +207,7 @@ This functionality could be invoked as in the following example:
     </para>
 
     <programlisting>
-       bld = Builder(action = 'foobuild < $SOURCE > $TARGET')
+       bld = Builder(action = 'foobuild &lt; $SOURCE &gt; $TARGET')
        env = Environment(BUILDERS = {'Foo' : bld})
        env.Foo('file.foo', 'file.input')
        env.Program('hello.c')
@@ -355,7 +355,7 @@ This functionality could be invoked as in the following example:
       the target or targets to be
       built by this builder function.
       The file names of these target(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -371,7 +371,7 @@ This functionality could be invoked as in the following example:
       the sources to be
       used by this builder function to build the targets.
       The file names of these source(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -484,7 +484,7 @@ This functionality could be invoked as in the following example:
       by the command or other action
       generated by this function.
       The file names of these source(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
@@ -502,7 +502,7 @@ This functionality could be invoked as in the following example:
       by the command or other action
       generated by this function.
       The file names of these target(s)
-      may be extracted using the Python &str; funcion.
+      may be extracted using the Python &str; function.
 
       </para>
       </listitem>
index 6f523a891820059b1dfe05cedac73e6f383a16ac..70c7ca70866f0a6b0dd9b94a0a17c56ea6bdedd4 100644 (file)
@@ -67,9 +67,9 @@
       def b(target, source, env):
           pass
       def s(target, source, env):
-          return "    ..."
+          return "    ... [build output] ..."
       a = Action(b, strfunction = s)
-      env = Environment(BUILDERS = {'A' : a})
+      env = Environment(BUILDERS = {'A' : Builder(action=a)})
       env.A('foo.out', 'foo.in')
       </file>
       <file name="foo.in">
@@ -80,7 +80,7 @@
     <scons_output example="SCONSFLAGS">
       <command>scons</command>
       <command>export SCONSFLAGS="-Q"</command>
-      <command>scons</command>
+      <command environment="SCONSFLAGS=-Q">scons</command>
     </scons_output>
 
     <para>
index cf15b93284e9e11eb11be50da807963df4dd55ae..78c94e1ca55c3b908886a19e66e9b41606f2d93e 100644 (file)
     <literallayout>
       % <userinput>scons</userinput>
       scons: Reading SConscript files ...
-          ...
       scons: done reading SConscript files.
       scons: Building targets ...
-      scons: `.' is up to date.
+          ... [build output] ...
       scons: done building targets.
       % <userinput>export SCONSFLAGS="-Q"</userinput>
       % <userinput>scons</userinput>
-      scons: Reading SConscript files ...
-          ...
-      scons: done reading SConscript files.
-      scons: Building targets ...
-      scons: `.' is up to date.
-      scons: done building targets.
+          ... [build output] ...
     </literallayout>
 
     <para>
index bedc91d6b79a086981177d313354276bb1121de1..43ec7f3b8c4f9e12c0205bcecc95c5fee817346b 100644 (file)
@@ -379,7 +379,7 @@ operating system on which the build is performed (as reported by C<uname
        Program('hello.c', CPPPATH = '.')
       </file>
       <file name="hello.c" printme="1">
-       #include "hello.h" 
+       #include &lt;hello.h&gt;
        int
        main()
        {
@@ -741,9 +741,8 @@ operating system on which the build is performed (as reported by C<uname
     </para>
 
     <programlisting>
-       env = Environment()
-       hello = env.Program('hello.c')
-       env.Ignore(hello, '/usr/include/stdio.h')
+       hello = Program('hello.c')
+       Ignore(hello, '/usr/include/stdio.h')
     </programlisting>
 
   </section>
@@ -765,9 +764,8 @@ operating system on which the build is performed (as reported by C<uname
     </para>
 
     <programlisting>
-       env = Environment()
-       hello = env.Program('hello.c')
-       env.Depends(hello, 'other_file')
+       hello = Program('hello.c')
+       Depends(hello, 'other_file')
     </programlisting>
 
     <!-- XXX mention that you can use arrays for target and source? -->
index f595e085b5c56709d896a16f1987356cb4c877dc..09fb62de472a13a4d3643067e88135bb2a84c428 100644 (file)
@@ -386,7 +386,7 @@ operating system on which the build is performed (as reported by C<uname
     </para>
 
     <programlisting>
-       #include "hello.h" 
+       #include &lt;hello.h&gt;
        int
        main()
        {
@@ -753,9 +753,8 @@ operating system on which the build is performed (as reported by C<uname
     </para>
 
     <programlisting>
-       env = Environment()
-       hello = env.Program('hello.c')
-       env.Ignore(hello, '/usr/include/stdio.h')
+       hello = Program('hello.c')
+       Ignore(hello, '/usr/include/stdio.h')
     </programlisting>
 
   </section>
@@ -777,9 +776,8 @@ operating system on which the build is performed (as reported by C<uname
     </para>
 
     <programlisting>
-       env = Environment()
-       hello = env.Program('hello.c')
-       env.Depends(hello, 'other_file')
+       hello = Program('hello.c')
+       Depends(hello, 'other_file')
     </programlisting>
 
     <!-- XXX mention that you can use arrays for target and source? -->
index 2b4fb5dda160bde1b1138bea1ecd33145daf6eda..eb9bf5bed8ac5afa76f1f5920de91507693285c8 100644 (file)
@@ -506,7 +506,7 @@ environment undisturbed.
    <literallayout>
       % <userinput>scons -Q</userinput>
       
-      scons: *** Two different environments were specified for the same target: foo.o
+      scons: *** Two environments with different actions were specified for the same target: foo.o
       File "SConstruct", line 6, in ?
    </literallayout>
 
index a31b2b4fa9ab0a8b96f0f65516704f76cd470872..7a88d6f969a89a4d8dd3fb4a264296e9dbc1c0ff 100644 (file)
@@ -46,9 +46,6 @@
       <file name="SConstruct" printme="1">
       Library('foo', ['f1.c', 'f2.c', 'f3.c'])
       </file>
-      <file name="hello.c">
-      int main() { printf("Hello, world!\n"); }
-      </file>
       <file name="f1.c">
       void f1() { printf("f1.c\n"); }
       </file>
 
     </para>
 
+    <section>
+    <title>Building Static Libraries Explicitly</title>
+
+      <para>
+
+      The &Library; function builds a traditional static library.
+      If you want to be explicit about the type of library being built,
+      you can use the synonym &StaticLibrary; function
+      instead of &Library:
+
+      </para>
+
+      <scons_example name="StaticLibrary" printme="1">
+        <file name="SConstruct" printme="1">
+        StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+        </file>
+      </scons_example>
+
+      <para>
+
+      There is no functional difference between the
+      &StaticLibrary; and &Library; functions.
+
+      </para>
+
+    </section>
+
+    <section>
+    <title>Building Shared (DLL) Libraries</title>
+
+      <para>
+
+      If you want to build a shared library (on POSIX systems)
+      or a DLL file (on Windows systems),
+      you use the &SharedLibrary; function:
+
+      </para>
+
+      <scons_example name="SharedLibrary" printme="1">
+        <file name="SConstruct" printme="1">
+        SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+        </file>
+        <file name="f1.c">
+        void f1() { printf("f1.c\n"); }
+        </file>
+        <file name="f2.c">
+        void f2() { printf("f2.c\n"); }
+        </file>
+        <file name="f3.c">
+        void f3() { printf("f3.c\n"); }
+        </file>
+      </scons_example>
+
+      <para>
+
+      The output on POSIX:
+
+      </para>
+
+      <scons_output example="SharedLibrary" os="posix">
+        <command>scons -Q</command>
+      </scons_output>
+
+      <para>
+
+      And the output on Windows:
+
+      </para>
+
+      <scons_output example="SharedLibrary" os="win32">
+        <command>scons -Q</command>
+      </scons_output>
+
+      <para>
+
+      Notice again that &SCons; takes care of
+      building the output file correctly,
+      adding the <literal>-shared</literal> option
+      for a POSIX compilation,
+      and the <literal>/dll</literal> option on Windows.
+
+      </para>
+
+    </section>
+
   </section>
 
   <section>
index fedeb7f059135c2be1fa5ef9cd9f07bf2937d09a..a47446a04167c53c01807bdeebe492681436de8e 100644 (file)
 
     </para>
 
+    <section>
+    <title>Building Static Libraries Explicitly</title>
+
+      <para>
+
+      The &Library; function builds a traditional static library.
+      If you want to be explicit about the type of library being built,
+      you can use the synonym &StaticLibrary; function
+      instead of &Library;:
+
+      </para>
+
+      <programlisting>
+        StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+      </programlisting>
+
+      <para>
+
+      There is no functional difference between the
+      &StaticLibrary; and &Library; functions.
+
+      </para>
+
+    </section>
+
+    <section>
+    <title>Building Shared (DLL) Libraries</title>
+
+      <para>
+
+      If you want to build a shared library (on POSIX systems)
+      or a DLL file (on Windows systems),
+      you use the &SharedLibrary; function:
+
+      </para>
+
+      <programlisting>
+        SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c'])
+      </programlisting>
+
+      <para>
+
+      The output on POSIX:
+
+      </para>
+
+      <literallayout>
+        % <userinput>scons -Q</userinput>
+        cc -c -o f1.os f1.c
+        cc -c -o f2.os f2.c
+        cc -c -o f3.os f3.c
+        cc -shared -o libfoo.so f1.os f2.os f3.os
+      </literallayout>
+
+      <para>
+
+      And the output on Windows:
+
+      </para>
+
+      <literallayout>
+        C:\><userinput>scons -Q</userinput>
+        cl /nologo /c f1.c /Fof1.obj
+        cl /nologo /c f2.c /Fof2.obj
+        cl /nologo /c f3.c /Fof3.obj
+        link /nologo /dll /out:foo.dll /implib:foo.lib f1.obj f2.obj f3.obj
+      </literallayout>
+
+      <para>
+
+      Notice again that &SCons; takes care of
+      building the output file correctly,
+      adding the <literal>-shared</literal> option
+      for a POSIX compilation,
+      and the <literal>/dll</literal> option on Windows.
+
+      </para>
+
+    </section>
+
   </section>
 
   <section>
index fe409ad2264ce216136764449add6e51266cd2ba..254b433939049db27a58573e00318a8ff2b452a6 100644 (file)
@@ -291,7 +291,7 @@ over the file scanning rather than being called for each input line:
         env = Environment(ENV = {'PATH' : '__ROOT__/usr/local/bin'})
         env.Append(SCANNERS = kscan)
 
-        env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET')
+        env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
       </file>
       <file name="foo.k">
       include other_file
index 23cd0447ec2d31e69a8da8bd33a17380ab022d8b..ee82b43c341372028501a01811cb194bb37fcfe6 100644 (file)
@@ -290,7 +290,7 @@ over the file scanning rather than being called for each input line:
         env = Environment(ENV = {'PATH' : '/usr/local/bin'})
         env.Append(SCANNERS = kscan)
 
-        env.Command('foo', 'foo.k', 'kprocess < $SOURCES > $TARGET')
+        env.Command('foo', 'foo.k', 'kprocess &lt; $SOURCES &gt; $TARGET')
     </programlisting>
 
     <!--
index 3940bc336d5f3fb77be36d4e349a0c62ac920daf..3d9d7dc1c960f804027ec73b83a67625704f3363 100644 (file)
 
  </para>
 
+ <section>
+ <title>Cleaning Up After a Build</title>
+
+   <para>
+
+   When using &SCons;, it is unnecessary to add special
+   commands or target names to clean up after a build.
+   Instead, you simply use the
+   <literal>-c</literal> or <literal>--clean</literal>
+   option when you invoke &SCons;,
+   and &SCons; removes the appropriate built files.
+   So if we build our example above
+   and then invoke <literal>scons -c</literal>
+   afterwards, the output on POSIX looks like:
+
+   </para>
+
+   <scons_example name="clean">
+      <file name="SConstruct">
+      Program('hello.c')
+      </file>
+      <file name="hello.c">
+      int main() { printf("Hello, world!\n"); }
+      </file>
+   </scons_example>
+
+   <scons_output example="clean" os="posix">
+      <command>scons</command>
+      <command>scons -c</command>
+   </scons_output>
+
+   <para>
+
+   And the output on Windows looks like:
+
+   </para>
+
+   <scons_output example="clean" os="win32">
+      <command>scons</command>
+      <command>scons -c</command>
+   </scons_output>
+
+   <para>
+
+   Notice that &SCons; changes its output to tell you that it
+   is <literal>Cleaning targets ...</literal> and
+   <literal>done cleaning targets.</literal>
+
+   </para>
+
+ </section>
+
  <section>
  <title>The &SConstruct; File</title>
 
    </para>
 
    <programlisting>
-      Program('program', Split('main.c file1.c file2.'))
+      Program('program', Split('main.c file1.c file2.c'))
    </programlisting>
 
    <para>
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program('program', list)
    </programlisting>
 
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program(target = 'program', source = list)
    </programlisting>
 
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program(source = list, target = 'program')
    </programlisting>
 
index 02a57ef6e24f2c752464a80fd4ac09a119c28e79..4309837aa770450bc53bbbf63719a8faecfd893a 100644 (file)
 
  </para>
 
+ <section>
+ <title>Cleaning Up After a Build</title>
+
+   <para>
+
+   When using &SCons;, it is unnecessary to add special
+   commands or target names to clean up after a build.
+   Instead, you simply use the
+   <literal>-c</literal> or <literal>--clean</literal>
+   option when you invoke &SCons;,
+   and &SCons; removes the appropriate built files.
+   So if we build our example above
+   and then invoke <literal>scons -c</literal>
+   afterwards, the output on POSIX looks like:
+
+   </para>
+
+   
+
+   <literallayout>
+      % <userinput>scons</userinput>
+      scons: Reading SConscript files ...
+      scons: done reading SConscript files.
+      scons: Building targets ...
+      cc -c -o hello.o hello.c
+      cc -o hello hello.o
+      scons: done building targets.
+      % <userinput>scons -c</userinput>
+      scons: Reading SConscript files ...
+      scons: done reading SConscript files.
+      scons: Cleaning targets ...
+      Removed hello.o
+      Removed hello
+      scons: done cleaning targets.
+   </literallayout>
+
+   <para>
+
+   And the output on Windows looks like:
+
+   </para>
+
+   <literallayout>
+      C:\><userinput>scons</userinput>
+      scons: Reading SConscript files ...
+      scons: done reading SConscript files.
+      scons: Building targets ...
+      cl /nologo /c hello.c /Fohello.obj
+      link /nologo /OUT:hello.exe hello.obj
+      scons: done building targets.
+      C:\><userinput>scons -c</userinput>
+      scons: Reading SConscript files ...
+      scons: done reading SConscript files.
+      scons: Cleaning targets ...
+      Removed hello.obj
+      Removed hello.exe
+      scons: done cleaning targets.
+   </literallayout>
+
+   <para>
+
+   Notice that &SCons; changes its output to tell you that it
+   is <literal>Cleaning targets ...</literal> and
+   <literal>done cleaning targets.</literal>
+
+   </para>
+
+ </section>
+
  <section>
  <title>The &SConstruct; File</title>
 
    </para>
 
    <programlisting>
-      Program('program', Split('main.c file1.c file2.'))
+      Program('program', Split('main.c file1.c file2.c'))
    </programlisting>
 
    <para>
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program('program', list)
    </programlisting>
 
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program(target = 'program', source = list)
    </programlisting>
 
    </para>
 
    <programlisting>
-      list = Split('main.c file1.c file2.')
+      list = Split('main.c file1.c file2.c')
       Program(source = list, target = 'program')
    </programlisting>