From 140d836e9cd54fb67b969fd82ef7ed19ba574d40 Mon Sep 17 00:00:00 2001 From: Luca Falavigna Date: Sat, 26 Apr 2014 15:11:58 +0200 Subject: Imported Upstream version 2.3.1 --- doc/user/parseflags.in | 176 ------------------------------------------------- 1 file changed, 176 deletions(-) delete mode 100644 doc/user/parseflags.in (limited to 'doc/user/parseflags.in') 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 @@ - - - - - &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. - - - - - - &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. - - - - - - &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.) - - - - - - 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') - - - int main() { return 0; } - - - - - scons -Q - - - - - Note that if the options are limited to generic types - like those above, - they will be correctly translated for other platform types: - - - - - scons -Q - - - - - 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: - - - - - - 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') - - - int main() { return 0; } - - - - - scons -Q - - - - - &ParseFlags; will also accept a (recursive) list of strings as input; - the list is flattened before the strings are processed: - - - - - - 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') - - - int main() { return 0; } - - - - - scons -Q - - - - - 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: - - - - - - 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') - - - int main() { return 0; } - - - - - scons -Q - - - - - &ParseFlags; is regularly updated for new options; - consult the man page for details about those currently recognized. - - -- cgit v1.2.3