Quick aside: F# CTP compiler flags (command-line options)
Posted by Brian on September 6, 2008
One thing that changed in the CTP release of F# is the names of various compiler options. Below is a brief table that shows the old names and new names of many command-line flags.
Old flag | New flag |
-i / –generate-interface-file | –sig |
-doc | –doc |
-Ooff | –optimize- |
-O0, 01, etc | –optimize |
–warn | –warnaserror[+|-] <int list> |
–all-warnings-as-errors | –warnaserror |
–warn-as-error <int> | –warnaserror <int> |
–utf8-output | –utf8output |
–clr-root | –cliroot |
–target-exe | –target exe |
–target-winexe | –target winexe |
–target-dll | –target library |
–target-module | –target module |
–static-link | –staticlink |
–public-keyfile | –keyfile <file> –delaysign |
–link-resource | –linkresource |
–base-address | –baseaddress |
–generate-debug-file / –no-debug-file | –debug / –debug –pdbonly |
–generate-html | –generatehtml |
–html-output-directory | –htmloutputdir |
–html-css | –htmlcss |
–html-namespace-file | –htmlnamespacefile |
–html-namespace-file-append | –htmlnamespacefileappend |
–no-framework | –noframework |
–all-tailcalls | –optimize |
–no-tailcalls | –optimize- notailcalls |
As with a number of other changes in the CTP, these changes were to make things more regular and consistent with other Visual Studio languages. The compiler help itself also now displays in a format similar to that of the C# and VB compilers (csc.exe and vbc.exe); here’s the output of "fsc.exe /?":
Microsoft F# Compiler, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.2, compiling for .NET Framework Version v2.0.50727
– OUTPUT FILES –
–out <string> Name of the output file (Short form: -o)
–target exe <string> Build an executable with a console
–target winexe <string> Build an executable without a stdin/stdout/stderr
–target library <string> Build a library (Short form: -a)
–target module <string> Build a module that can be added to another
assembly
–delaysign[+|-] Delay-sign the assembly using only the public
portion of the strong name key
–doc <string> Write the xmldoc of the assembly to the given
file.
–keyfile <string> Specify a strong name key file
–platform <string> Limit which platforms this code can run on:
x86, Itanium, x64 or anycpu. The default is
anycpu
–nooptimizationdata Only include optimization information essential
for implementing inlined constructs. Inhibits
cross-module inlining but improves binary
compatibility
–nointerfacedata Don’t add a resource to the generated assembly
containing F#-specific metadata
–sig <string> Print the inferred interface of the assembly
to a file
– INPUT FILES –
–reference <string> Reference an F# or .NET assembly (Short form: -r)
– RESOURCES –
–win32res <string> Specify a Win32 resource file (.res)
–resource <string> Embed the specified managed resource
–linkresource <string> Link the specified resource to this assembly
where the resinfo format is
<file>[,<string name>[,public|private]]
– CODE GENERATION –
–debug[+|-] Emit debug information (Short form: -g)
–debug <string> Specify debugging type: full, pdbonly. default,
(‘full’ is the default and enables attaching a
debugger to a running program)
–optimize[+|-] Enable optimizations (Short form: -O)
–optimize[+|-] <string list> Control specific optimizations (Short form: -O)
The following optimizations may be selectively
enabled or disabled: nojitoptimize,
nojittracking, nolocaloptimize, nocrossoptimize,
notailcalls
– ERRORS AND WARNINGS –
–warnaserror[+|-] Report all warnings as errors
–warnaserror[+|-] <int list> Report specific warnings as errors
–warn <int> Set a warning level (0-4)
–nowarn <string list> Disable specific warning messages
– LANGUAGE –
–checked[+|-] Generate overflow checks
–define <string> Define conditional compilation symbols (Short
form: -d)
–mlcompatibility Ignore OCaml-compatibility warnings.
– HTML –
–generatehtml Generate HTML documentation
–htmloutputdir <string> Output directory for HTML documentation
–htmlcss <string> Set the name of the Cascading Style Sheet
–htmlnamespacefile <string> Set the name of the master namespaces.html
file assumed to be in the output directory
–htmlnamespacefileappend Append to the master namespace file when
generating HTML documentation
– MISCELLANEOUS –
–nologo Don’t show the splash text on startup
–help Display this usage message (Short form: -?)
– ADVANCED –
–baseaddress <string> Base address for the library to be built
–codepage <int> Specify the codepage used to read source files
–utf8output Output compiler messages in UTF-8 encoding
–fullpaths Compiler generates fully qualified paths
–cliroot <string> Use to override where the compiler looks for
mscorlib.dll and framework components
–cliversion <string> Version of the framework to target (for
example, 2.0, 3.0 or 3.5). The default is 2.0
–noframework Do not reference the .NET Framework assemblies
by default
–times Display timing profiles for compilation
–standalone Statically link the F# library and all
referenced DLLs that depend on it into the
assembly being generated.
–staticlink <string> Statically link the given assembly and all
referenced DLLs that depend on this assembly.
Use an assembly name e.g. mylib, not a DLL name
–pdb <string> Name the output debug file
–lib <string list> Specify a directory for the include path (Short
form: -I)
By the way, you might notice the version number is 1.9.6.2 – yesterday we released a minor update to the CTP with a few high priority fixes. Thanks again to everyone who has given great feedback on the CTP release!
Leave a comment