diff options
Diffstat (limited to 'doc/user/parseflags.in')
-rw-r--r-- | doc/user/parseflags.in | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/doc/user/parseflags.in b/doc/user/parseflags.in deleted file mode 100644 index 6ec716d..0000000 --- a/doc/user/parseflags.in +++ /dev/null @@ -1,176 +0,0 @@ -<!-- - - Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The SCons Foundation - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---> - - <para> - - &SCons; has a bewildering array of construction variables - for different types of options when building programs. - Sometimes you may not know exactly which variable - should be used for a particular option. - - </para> - - <para> - - &SCons; construction environments have a &ParseFlags; method - that takes a set of typical command-line options - and distrbutes them into the appropriate construction variables. - Historically, it was created to support the &ParseConfig; method, - so it focuses on options used by the GNU Compiler Collection (GCC) - for the C and C++ toolchains. - - </para> - - <para> - - &ParseFlags; returns a dictionary containing the options - distributed into their respective construction variables. - Normally, this dictionary would be passed to &MergeFlags; - to merge the options into a &consenv;, - but the dictionary can be edited if desired to provide - additional functionality. - (Note that if the flags are not going to be edited, - calling &MergeFlags; with the options directly - will avoid an additional step.) - - </para> - - <scons_example name="ParseFlags1"> - <file name="SConstruct" printme="1"> - env = Environment() - d = env.ParseFlags("-I/opt/include -L/opt/lib -lfoo") - for k,v in sorted(d.items()): - if v: - print k, v - env.MergeFlags(d) - env.Program('f1.c') - </file> - <file name="f1.c"> - int main() { return 0; } - </file> - </scons_example> - - <scons_output example="ParseFlags1" os="posix"> - <scons_output_command>scons -Q</scons_output_command> - </scons_output> - - <para> - - Note that if the options are limited to generic types - like those above, - they will be correctly translated for other platform types: - - </para> - - <scons_output example="ParseFlags1" os="win32"> - <scons_output_command>scons -Q</scons_output_command> - </scons_output> - - <para> - - Since the assumption is that the flags are used for the GCC toolchain, - unrecognized flags are placed in &cv-link-CCFLAGS; - so they will be used for both C and C++ compiles: - - </para> - - <scons_example name="ParseFlags2"> - <file name="SConstruct" printme="1"> - env = Environment() - d = env.ParseFlags("-whatever") - for k,v in sorted(d.items()): - if v: - print k, v - env.MergeFlags(d) - env.Program('f1.c') - </file> - <file name="f1.c"> - int main() { return 0; } - </file> - </scons_example> - - <scons_output example="ParseFlags2"> - <scons_output_command>scons -Q</scons_output_command> - </scons_output> - - <para> - - &ParseFlags; will also accept a (recursive) list of strings as input; - the list is flattened before the strings are processed: - - </para> - - <scons_example name="ParseFlags3"> - <file name="SConstruct" printme="1"> - env = Environment() - d = env.ParseFlags(["-I/opt/include", ["-L/opt/lib", "-lfoo"]]) - for k,v in sorted(d.items()): - if v: - print k, v - env.MergeFlags(d) - env.Program('f1.c') - </file> - <file name="f1.c"> - int main() { return 0; } - </file> - </scons_example> - - <scons_output example="ParseFlags3"> - <scons_output_command>scons -Q</scons_output_command> - </scons_output> - - <para> - - If a string begins with a "!" (an exclamation mark, often called a bang), - the string is passed to the shell for execution. - The output of the command is then parsed: - - </para> - - <scons_example name="ParseFlags4"> - <file name="SConstruct" printme="1"> - env = Environment() - d = env.ParseFlags(["!echo -I/opt/include", "!echo -L/opt/lib", "-lfoo"]) - for k,v in sorted(d.items()): - if v: - print k, v - env.MergeFlags(d) - env.Program('f1.c') - </file> - <file name="f1.c"> - int main() { return 0; } - </file> - </scons_example> - - <scons_output example="ParseFlags4"> - <scons_output_command>scons -Q</scons_output_command> - </scons_output> - - <para> - - &ParseFlags; is regularly updated for new options; - consult the man page for details about those currently recognized. - - </para> |