ocamlc に認識されるコマンドラインオプションは以下の通りです。
-a
コマンドラインに与えられたオブジェクトファイル (.cmo
) をとり、ライブラリ (.cma
) を作成します。
実行ファイルは生成されません。ライブラリの名前は -o
オプションで指定できます。
コマンドラインに -custom
、 -cclib
や -ccop
t オプションが渡されたら、これらのオプションは出力される .cma
ライブラリに保存され、このライブラリをリンクするときに自動的に -custom
、 -cclib
や -ccopt
が追加されます (ただしリンク時に -noautolink
が指定されない場合)。
-c
コンパイルのみ行います。 リンクを行いません。 ソースコードファイルをコンパイル済みファイルに変換しますが、実行ファイルは生成されません。 このオプションはモジュールの分割コンパイル時に使用できます。
-cc
ccomp
ocamlc -custom
で呼ばれる C リンカや .c
ソースファイルをコンパイルする C コンパイラとして ccomp
を使用します。
-cclib -l
libname
カスタムランタイムモードでのリンク時、C リンカにオプションとして -l
libname
を渡し、指定された C ライブラリをプログラムにリンクします。
-ccopt
option
カスタムランタイムモードでのリンク時、C コンパイラやリンカに与えられたオプションを渡します。
例えば、-ccopt
-L
dir
なら C リンカは C ライブラリを探す際ディレクトリ dir
を見るようになります。
-custom
-dlib -l
libname
ランタイムシステム ocamlrun がプログラムスタート時に動的ロードする C 共有ライブラリ dll
(Windows では libname
.sodll
) を指定します。
libname
.dll
-dllpath
dir
ランタイムシステムが共有 C ライブラリを検索するディレクトリ dir
を追加します。
リンク時は共有ライブラリを標準検索パス (-I
オプションと関連する) へ検索しにいきます。-dllpath
オプションで dir
が単純に生成される実行ファイルへ埋め込まで、ocamlrun がそれを見つけ探しに行きます。詳細は 10.3 章を見てください。
-dtypes
詳細な型の情報を表示します。x.ml
というファイルの情報は x.annot
というファイルに出力されます。
型エラーが起こった場合には、エラーが起きる前までに型チェッカによって推論されたすべての情報がダンプされます。
x.annot
ファイルは emacs/caml-types.el
で定義されるコマンドで型をインタラクティブに表示するのに使うことができます。
-g
コンパイルとリンク時にデバッグ情報を追加します。 ocamldebug でプログラムをデバッグする場合はこのオプションが必要です。 詳細は 16 章を見てください。 また、プログラムが例外により終了した場合のスタックトレースを生成するためにも必要です。詳細は10.2節を見てください。
-i
実装ファイル (.ml
) をコンパイルする際、定義されている名前をすべて型と定義付きで表示します。
コンパイル済みファイル(.cmo
と .cmi
)は生成されません。
コンパイラがどのように型推論をしているかチェックするときに使用できます。
また出力はインターフェイスの文法に従っているので、インターフェイスファイル (.mli
) を書くときの手助けになります。
標準出力を .mli
ファイルにリダイレクトして、非公開な名前の宣言を消していくだけです。
-I
directory
コンパイル済みインターフェイスファイル (.cmi
) 、コンパイル済みオブジェクトコードファイル (.cmo
) 、ライブラリ (.cma
) 、-cclib -lxxx
で指定される C ライブラリを検索する際検索しに行くディレクトリのリストに与えられたディレクトリを追加します。
デフォルトでは、まずカレントディレクトリが、それから標準ライブラリディレクトリが検索されます。-I
で追加されたディレクトリは、カレントディレクトリより後に、標準ライブラリディレクトリより前に、コマンドラインに与えられた順に検索されます。
+
で始まるディレクトリ名は、標準ライブラリディレクトリからの相対パスとみなされます。例えば -I +labltk
は標準ライブラリのサブディレクトリ labltk
を検索パスに追加します。
-impl
filename
ファイル filename
を実装ファイルとしてコンパイルします。
拡張子が .ml
でなくても構いません。
-intf
filename
ファイル filename
をインターフェイスファイルとしてコンパイルします。
拡張子が .mli
でなくても構いません。
linkall
ライブラリに含まれるモジュールをすべて強制的にリンクします。
このフラグが与えられなかったら、参照されないモジュールはリンクされません。
ライブラリを作成するときに (-a
flag) これを与えると、そのライブラリを使用するプログラムをリンクする際、ライブラリ内のモジュールはすべて強制的にリンクされます。
-make-runtime
カスタムランタイムシステムを作成します。このランタイムシステムはコマンドラインで与えられた C オブジェクトやライブラリと合体しています。
ocamlc -use-runtime runtime-name
オプションで生成されたバイトコードがこのカスタムランタイムシステムを使用するようになります。
詳しくはセクション 18.1.6 を見てください。
-noassert
assertion のチェックをやめます。 assertion はコンパイルされません。 すでにコンパイルされたファイルをリンクする場合には、このフラグは何の意味も持ちません。
-noautolink
.cma
ファイルをリンクするとき、ライブラリが潜在的に持つ -custom
、 -cclib
や -ccopt
といったオプション (ライブラリを作成するときに指定されたもの) を無視します。
ライブラリが間違った C ライブラリや C オプションの指定をしているときに使用できます。
この場合、リンクの際コマンドラインで -noautolink
を指定して、正しい C ライブラリやオプションを指定し直してください。
-nolabels
型の中でオプションではないラベルを無視します。適用にラベルは使用できません。パラメータの順序が絶対になります。
-o
exec-file
リンカによって出力されるファイルの名前を指定します。
デフォルトの出力ファイル名は Unix 環境で a.out
、 Windows 環境で camlprog.exe
です。
-a
が指定されている場合は生成されるライブラリ名の指定になります。
もし -pack
が指定されている場合は生成されるパックオブジェクトファイル名の指定になります。
-output-obj
が指定されている場合は生成されるファイル名の指定になります。
-output-obj
リンカは実行ファイルではなく C オブジェクトファイルを生成します。
C のプログラムから呼べるように、Caml のコードを C のライブラリとしてラップするのに使います。
18 章のセクション 18.7.5 を見てください。
出力されるオブジェクトファイルの名前はデフォルトで camlprog.o
です。
-o
オプションで変更可能です。
-pack
コマンドラインで与えられたオブジェクトファイルをまとめて、オブジェクトファイル (.cmo
) とそのコンパイル済みインターフェイス (.cmi
) を生成します。
元のオブジェクトは出力された .cmo
ファイルのサブモジュールとなります。
出力される .cmo
ファイルの名前は -o
オプションで必ず与えてください。
ocamlc -pack -o p.cmo a.cmo b.cmo c.cmo
例として、上記のコマンドは p.cmo
と p.cmi
を生成します。それらは 3 つのサブモジュール A
、 B
、 C
を持ち、それぞれオブジェクトファイル a.cmo
、 b.cmo
、 c.cmo
の内容に対応します。他のプログラムからは、P.A
、 P.B
、 P.C
などとしてこれらの内容を参照することができます。
-pp
command
コンパイラは与えられたコマンド command
をプリプロセッサとしてすべてのソースファイルに適用します。
command
の出力は一時ファイルにリダイレクトされてからコンパイルされます。
コンパイルでエラーが発生しなかったら一時ファイルは削除されます。
ソースファイルのベース名と拡張子 .ppi
(インターフェイス .mli
の場合) もしくは .ppo
(実装 .ml
の場合) から構成される名前が一時ファイルの名前になります。
-principal
型チェックの際 information path をチェックします。
すべての型が principal way で導出されているか確認します。
ラベル付き引数や多相メソッドを使用しているときは、このフラグをつけてコンパイルの通らないコードは、将来コンパイラのバージョンアップで型チェックの内部アルゴリズムが変更された場合正しく型推論できなくなるかもしれません。
-principal
モードでコンパイルの通るプログラムは必ずデフォルトモード (equivalent type) でもコンパイルが通ります (ただしバイナリの signature は異なります) 。
このオプションを付けると型チェックが遅くなるかもしれません。ソースコードを公開する前に一度これでコンパイルしてみるといいです。
-rectypes
型チェックの際、任意の再帰的な型を許します。 デフォルトでは、オブジェクト型を経由する再帰による再帰的な型しかサポートされません。 一度このフラグを使ってインターフェースファイルを生成したら、それが依存するすべてのものに対して使わなくてはいけません。
-thread
24 章で解説される threads ライブラリと組み合わせてマルチスレッドプログラムをコンパイル、リンクします。
-unsafe
配列や文字列アクセスのバウンダリチェックをオフにします (v.(i)
や s.[i]
) 。
-unsafe
でコンパイルされたプログラムはいくらか速くなりますが安全ではありません。
プログラムが配列や文字列のバウンド外をアクセスした場合何が起こるかわかりません。
-use-runtime
runtime-name
あらかじめ ocamlc -make-runtime runtime-name
で生成されているカスタムランタイムシステム runtime-name
を使用して実行するバイトコード実行ファイルを生成します。
詳しくはセクション 18.1.6 を見てください。
-v
コンパイラのバージョンと標準ライブラリディレクトリを表示して終了します。
-verbose
外部コマンドを実行する前に、そのコマンドを表示します。
特に -custom
モードで C コンパイラやリンカの起動を表示します。
C ライブラリプログラムをデバッグするのに使用できます。
-version
コンパイラのバージョンを短い表記 (3.06 みたいに) 表示して終了します。
-vmthread
24 章で解説される VM レベル threads ライブラリと組み合わせてマルチスレッドプログラムをコンパイル、リンクします。
-w
warning-list
警告を有効/無効にします。引数 warning-list
は文字列で、各文字は以下の意味を持ちます。
A/a | すべての警告を有効/無効にする |
C/c | コメントかどうか疑わしいものに対する警告を有効/無効にする |
D/d | 推奨されていない (deprecated) 機能に対する警告を有効/無効にする |
E/e | 不十分なパターンマッチ(バリアントにコンストラクタが追加されても、成立するmatch式)に対する警告を有効/無効にする |
F/f | 関数の部分適用に対する警告を有効/無効にする (つまり f x; expr のようなコードで、適用 f x が関数型を持つようなとき). |
L/l | 適用でラベルが省略されていることに対する警告を有効/無効にする |
M/m | メソッドのオーバーライドに対する警告を有効/無効にする |
P/p | 部分マッチ (パターンマッチでどれにもマッチしない場合があるもの) に対する警告を有効/無効にする |
S/s | enable/disable warnings for statements that do not have type unit (e.g. expr1; expr2 when expr1 does not have type unit), and that are not functions (covered by warning F). |
U/u | 使用されない (冗長な) マッチケースに対するに対する警告を有効/無効にする |
V/v | 隠れたインスタンス変数に対する警告を有効/無効にする |
Y/y | enable/disable warnings for unused variables bound with the let or as keywords and that don't start with an underscore. |
Z/z | enable/disable warnings for all other unused variables that don't start with an underscore. |
X/x | enable/disable warnings that don't fit in the above categories. |
The default setting is -w Aelz (all warnings enabled except fragile matchings, omitted labels, non-suspicious unused variables). Warnings F and
S rely on the type system, thus they are not triggered when the type of the statement is unknown.
-warn-error
warning-list
Turn the warnings indicated in the argument warning-list into errors. The compiler will stop with an error when one of these warnings is emitted. The warning-list is a string of one or several characters, with the same meaning as for the -w option: an uppercase character turns the corresponding warning into an error, a lowercase character leaves it as a warning. The default setting is -warn-error a (none of the warnings is treated as an error).
-where
Print the location of the standard library, then exit.