# Command line Utility

Compiler Options

Description

  This spec goes for CLIPPERCMD, HARBOURCMD, Harbour compiler and #pragma directives in the source code.
  The command line always overrides the envvar.
  Note that some switches are not accepted in envvar,some others in #pragmas.
  First the parser should start to step through all the tokens in the string separated by whitespace. (or just walk through all argv[])
  1.) If the token begins with "-", it should be treated as a new style switch.
  One or more switch characters can follow this. The "-" sign inside the token will turn off the switch.
  If the switch has an argument all the following characters are treated as part of the argument.
  The "/" sign has no special meaning here.

Switch | Result option
-wn | ( W N )
-w-n | ( !W N )
-wi/harbour/include/ | ( W I=/harbour/include/ )
-wi/harbour/include/n | ( W I=/harbour/include/n )
-wes0n | ( W ES=0 N )
-wen | ( W [invalid switch: e] N )
-wesn | ( W ES=default(0) N )
-wses | ( W S ES=default(0) )
-wess | ( W ES=default(0) S )
- | ( [invalid switch] )
-w-n-p | ( !W !N P )
-w-n-p- | ( !W !N !P )
-w- -w -w- | ( finally: !W )

  2.) If the token begins with "/", it should be treated as a compatibility style switch.
  The parser scans the token for the next "/" sign or EOS and treats the resulting string as one switch.
  This means that a switch with an argument containing "/" sign has some limitations. This may be solved by allowing the usage of quote characters. This is mostly a problem on systems which use "/" as path separator.
  The "-" sign has no special meaning here, it can't be used to disable a switch.

Switch | Result option
/w/n | ( W N )
/wo/n | ( [invalid switch: wo] N )
/ihello/world/ | ( I=hello [invalid switch: world] [invalid switch: /] )
/i"hello/world/"/w | ( I=hello/world/ W )
/ihello\world\ | ( I=hello\world\ )

  3.) If the token begins with anything else it should be skipped.
  The Harbour switches are always case insensitive.
  In the Harbour commandline the two style can be used together:
  HARBOUR -wnes2 /gc0/q0 -ic:\hello
  Exceptions:
  - Handlig of the /CREDIT undocumented switch on Harbour command line is unusual, check the current code for this.
  - The CLIPPER, HARBOUR and Harbour application command line parsing is a different beast, see CMDARG.C for a NOTE.
  Notes:
  - All occurences where a path is accepted, Harbour should handle the quote char to specify path containing space, negative sign, slash, or any other chars with special meaning.
  /i"c:/hello/"
  -i"c:/hello-n"
  /i"c:/program files/"
  -i"c:/program files/"
Just some examples for the various accepted forms: //F20 == /F20 == F20 == F:20 == F20X //TMPPATH:C:\HELLO F20//TMPPATH:/TEMP///F:30000000 NOIDLE F0NOIDLEX10 SQUAWKNOIDLE
  "//" should always be used on the command line.

See Also

- Compiler Options