X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=man%2Fmcs.1;h=c3f9484b17a582f56d65dc454eb2065f551e1172;hb=fcdb7daa1091cc026ae11cca698d08dd56b8eeb3;hp=0a271026a5cb6a48e2b2c3fcfd1d84c50f2470b1;hpb=a6126c15ea1e0fd9becc4bfadcfd7538f777e5d8;p=mono.git diff --git a/man/mcs.1 b/man/mcs.1 index 0a271026a5c..c3f9484b17a 100755 --- a/man/mcs.1 +++ b/man/mcs.1 @@ -6,11 +6,18 @@ mcs \- Mono Compiler Suite. [option] [source-files] .SH DESCRIPTION mcs is the Mono C# compiler, an implementation of the ECMA-334 -specification. You can pass one or more options to drive the +language specification. You can pass one or more options to drive the compiler, and a set of source files. Extra options or arguments can be provided in a response file. Response files are referenced by prepending the @ symbol to the response file name. .PP +The Mono C# compiler accepts the same options than the Microsoft C# +compiler does. Those options can start with a slash or a dash +(/checked is the same as -checked). Additionally to this, the +GNU-like options are supported, those begin with "--". All +MCS-specific flags which are not available in the Microsoft C# +compiler are available only with the GNU-style options. +.PP C# source files must end with a ".cs" extension. Compilation of C# source code requires all the files that make up a library, module or executable to be provided on the command line. There is no support @@ -29,80 +36,250 @@ Executables are not bound to a specific CPU or operating system. .I \-\-about Displays information about the Mono C# compiler .TP -.I \-\-checked +.I \-\-addmodule:MODULE1[,MODULE2] +Includes the specified modules in the resulting assembly. +.TP +.I -checked, -checked+ Sets the default compilation mode to `checked'. This makes all the math operations checked (the default is unchecked). .TP -.I \-\-define SYMBOL -Defines a symbol named SYMBOL. This can be tested in the source code -by the pre-processor. +.I -checked- +Sets the default compilation mode to `unchecked'. This makes all +the math operations unchecked (this is the default). +.TP +.I -codepage:ID +Specifies the code page used to process the input files from the +point it is specified on. By default files will be processed in the +Latin-1 code page. The compiler will also automatically detect +Unicode files that have an embedded byte mark at the beginning. The +special ID "utf8" can be used to switch to utf8 and the ID "reset" +restores the automatic handling of code pages. +.TP +.I \-define:SYMLIST, -d:SYMLIST +Defines the symbol listed by the semi-colon separeted list SYMLIST +SYMBOL. This can be tested in the source code by the pre-processor, +or can be used by methods that have been tagged with the Conditional +attribute. +.TP +.I \-debug, \-debug+, \-g +Generate debugging information. To obtain stack traces with debugging +information, you need to invoke the mono runtime with the `--debug' +flag. This debugging information is stored inside the assembly as a +resource. +.TP +.I \-debug- +Do not generate debugging information. .TP +.I \-delaysign+ +Only embed the strongname public key into the assembly. The actual +signing must be done in a later stage using the SN tool. This is useful +to protect the private key during development. Note that delay signing +can only be done using a strongname key file (not a key container). The +option is equivalent to including [assembly: AssemblyDelaySign (true)] +in your source code. Compiler option takes precedence over the +attributes. +.TP +.I \-delaysign- +Default. Strongname (sign) the assembly using the strong name key file +(or container). The option is equivalent to including [assembly: +AssemblyDelaySign (false)] in your source code. Compiler option takes +precedence over the attributes. +.TP +.I \-\-expect-error X L +The compiler will expect the code to generate an error +named `X' in line `L'. This is only used by the test suite. +.TP .I \-\-fatal This is used for debugging the compiler. This makes the error emission generate an exception that can be caught by a debugger. .TP -.I \-\-stacktrace -Generates a stack trace at the time the error is reported, useful for -debugging the compiler. +.I \-keyfile:KEYFILE +Strongname (sign) the output assembly using the key pair present in +the specified strong name key file (snk). A full key pair is required +by default (or when using delaysign-). A file containing only the +public key can be used with delaysign+. The option is equivalent to +including [assembly: AssemblyKeyFile ("KEYFILE")] in your source code. +Compiler option takes precedence over the attributes. +.TP +.I \-keycontainer:CONTAINER +Strongname (sign) the output assembly using the key pair present in +the specified container. Note that delaysign+ is ignored when using +key containers. The option is equivalent to including [assembly: +AssemblyKeyName ("CONTAINER")] in your source code. Compiler option +takes precedence over the attributes. +.TP +.I \-langversion:TEXT +The option specifies the version of the language to use. The feature +set is different in each C# version. This switch can be used to force +the compiler to allow only a subset of the features. +The possible values are: +.nf + +Default - Instruct compiler to use the latest version. Equivalent +is to omit the switch. + +ISO-1 - Restrict compiler to use only ISO standardized features. +The usage of features such as generics, static classes, anonymous +methods will lead to error. +.TP +.I -lib:PATHLIST +Each path specified in the comma-separated list will direct the +compiler to look for libraries in that specified path. .TP .I \-L PATH Directs the compiler to look for libraries in the specified path. -Multiple paths can be provided. +Multiple paths can be provided by using the option multiple times. +.TP +.I \-main:CLASS +Tells the compiler which CLASS contains the entry point. Useful when +you are compiling several classes with a Main method. .TP -.I \-\-nostdlib +.I \-nostdlib, -nostdlib+ Use this flag if you want to compile the core library. This makes the compiler load its internal types from the assembly being compiled. .TP -.I \-\-nowarn XXX -Makes the compiler ignore warning XXX. +.I \-noconfig, \-noconfig+ +Disables the default compiler configuration to be loaded. The +compiler by default has references to the system assemblies. .TP -.I \-o FNAME -Names the output file to be generated. +.I \-nowarn:WARNLIST +Makes the compiler ignore warnings specified in the comma-separeted +list WARNLIST> .TP -.I \-\-optimize -Turns on optimizations in the compiler. +.I -out:FNAME, -o FNAME +Names the output file to be generated. .TP .I \-\-parse Used for benchmarking. The compiler will only parse its input files. .TP -.I \-\-probe X L -Probes for the code to generate an error named `X' in line `L'. This -is only used by the test suite. +.I \-pkg:package1[,packageN] +The compiler will invoke pkg-config --libs on the set of packages +specified on the command line to obtain libraries and directories to +compile the code. +.PP +This is typically used with third party components, like this: +.nf + $ mcs -pkg:gtk-sharp demo.cs +.fi .TP -.I \-\-target KIND -Used to specify the desired target. The possible values are: exe, -winexe, library and module. +.I -resource:RESOURCE[,ID] +Embeds to the given resource file. The optional ID can be used to +give a different name to the resource. If not specified, the resource +name will be the file name. +.TP +.I -linkresource:RESOURCE[,ID] +Links to the specified RESOURCE. The optional ID can be used to give +a name to the linked resource. +.TP +.I -r:ASSEMBLY1[,ASSEMBLY2], \-r ASSEMBLY1[,ASSEMBLY2] +Reference the named assemblies. Use this to use classes from the named +assembly in your program. The assembly will be loaded from either the +system directory where all the assemblies live, or from the path +explicitly given with the -L option. +.PP +You can also use a semicolon to separate the assemblies instead of a +comma. +.TP +.I \-recurse:PATTERN, --recurse PATTERN +Does recursive compilation using the specified pattern. In Unix the +shell will perform globbing, so you migth want to use it like this: +.PP +.nf + $ mcs -recurse:'*.cs' +.fi +.TP +.I \-\-stacktrace +Generates a stack trace at the time the error is reported, useful for +debugging the compiler. +.TP +.I \-target:KIND, \-t:KIND +Used to specify the desired target. The possible values are: exe +(plain executable), winexe (Windows.Forms executable), library +(component libraries) and module (partial library). .TP .I \-\-timestamp Another debugging flag. Used to display the times at various points in the compilation process. .TP -.I \-\-unsafe +.I \-unsafe, -unsafe+ Enables compilation of unsafe code. .TP -.I \-\-werror +.I \-v +Debugging. Turns on verbose yacc parsing. +.TP +.I \-v2 +Turns on C# 2.0 language features. +.TP +.I \-\-version +Shows the compiler version. +.TP +.I \-warnaserror, \-warnaserror+ Treat warnings as errors. .TP -.I \-\-wlevel LEVEL +.I \-warn:LEVEL Sets the warning level. 0 is the lowest warning level, and 4 is the highest. The default is 2. .TP -.I \-r ASSEMBLY -Reference the named assembly. Use this to use classes from the named -assembly in your program. +.I \-win32res:FILE +Specifies a Win32 resource file (.res) to be bundled into the +resulting assembly. .TP -.I \-v -Debugging. Turns on verbose yacc parsing. +.I \-win32icon:FILE +Attaches the icon specified in FILE on the output into the resulting +assembly. +.TP +.I \-\- +Use this to stop option parsing, and allow option-looking parameters +to be passed on the command line. .PP +.SH SPECIAL DEFINES +The +.B TRACE +and +.B DEBUG +defines have a special meaning to the compiler. +.PP +By default calls to methods and properties in the +System.Diagnostics.Trace class are not generated unless the TRACE +symbol is defined (either through a "#define TRACE") in your source +code, or by using the +.I "--define TRACE" +in the command line. +.PP +By default calls to methods and properties in the +System.Diagnostics.Debug class are not generated unless the DEBUG +symbol is defined (either through a "#define DEBUG") in your source +code, or by using the +.I "--define DEBUG" +in the command line. +.PP +Note that the effect of defining TRACE and DEBUG is a global setting, +even if they are only defined in a single file. +.PP +.SH DEBUGGING SUPPORT +When use the "--debug" or "-g" flag, MCS will create an assembler file +FILE-debug.s containing debugging information where FILE is the name of +the generated assembly. You need to run this file through the assembler +to get a object file FILE-debug.o. See mono's "--dwarf-plus" argument +for details on how to use this file. +.SH NOTES +During compilation the MCS compiler defines the __MonoCS__ symbol, +this can be used by pre-processor instructions to compile Mono C# +compiler specific code. Please note that this symbol is only to test +for the compiler, and is not useful to distinguish compilation or +deployment platforms. .SH AUTHORS -The Mono C# Compiler was written by Miguel de Icaza and Ravi Pratap at -Ximian. +The Mono C# Compiler was written by Miguel de Icaza, Ravi Pratap and +Martin Baulig at Ximian. .PP .SH LICENSE The Mono Compiler Suite is released under the terms of the GNU GPL. Please read the accompanying `COPYING' file for details. Alternative licenses are available from Ximian. .PP +.SH SEE ALSO +mono(1), mint(1), sn(1) +.PP .SH BUGS To report bugs in the compiler, you can use `bug-buddy', or you can file bug reports in our bug tracking system: