プログラミング言語SML#解説 3.7.1版
28 SML#コンパイラの起動

28.1 モード選択オプション

以下のオプションはsmlsharpコマンドの実行モードを指定する. smlsharpコマンドのコマンドラインには,以下のオプションの いずれかが高々1つ指定されていなければならない.

--help

ヘルプメッセージを表示して終了する.

-fsyntax-only

指定された.smlおよび.smiファイルの構文検査のみを行い, コンパイルを中断する. 後述する-oオプションをこのオプションと同時に指定することは できない. 検査の結果はエラーメッセージと終了ステータスで通知される.

-ftypecheck-only

指定された.smlおよび.smiファイルの型検査を行い, コンパイルを中断する. -oオプションをこのオプションと同時に指定することは できない. 検査の結果はエラーメッセージと終了ステータスで通知される.

-S

指定された.smlファイルをコンパイルし,アセンブリコードを ファイルに出力する. 出力ファイル名には,入力ファイル名の拡張子.sml.sに 置き換えた名前を用いる. 入力ファイルがただ1つだけの場合に限り,-oオプション で出力ファイル名を指定することができる.

-c

指定された.smlファイルをコンパイルし,オブジェクトファイルを 出力する. 出力ファイル名には,入力ファイル名の拡張子.sml.oに 置き換えた名前を用いる. 入力ファイルがただ1つだけの場合に限り,-oオプション で出力ファイル名を指定することができる.

-Mm

入力ファイルとして指定された.smiファイルをプログラムエントリ とするプログラム全体をコンパイルおよびリンクするために必要なMakefileを 生成する. 指定された.smiファイルから,コンパイルおよびリンクに必要な 全てのファイルの依存関係が計算される. ml-lexやml-yaccなどのソースファイルを生成するツールを含まない プロジェクトならば,このモードはそのプロジェクトのための完全な Makefileを出力する. -oオプションと共に指定されている場合,標準出力の代わりに -oで指定されたファイルに結果を出力する.

-MMm

-Mmと同じだが,標準ライブラリは出力から除外される.

-M

指定された.smlファイルをコンパイルするときに読み込まれる ファイルのリストをMakefile形式で標準出力に表示する. -oオプションと共に指定されている場合,標準出力の代わりに -oで指定されたファイルに結果を出力する.

-MM

-Mと同じだが,標準ライブラリは出力から除外される.

-Ml

指定された.smiファイルと指定してリンクするときに リンク対象となるオブジェクトファイルのリストをMakefile形式で標準出力に 表示する. -oオプションと共に指定されている場合,標準出力の代わりに -oで指定されたファイルに結果を出力する.

-MMl

-Mlと同じだが,標準ライブラリは出力から除外される.

以上のいずれのオプションも指定されていない場合, 入力ファイルの有無によって実行モードが異なる.

  • 入力ファイルが指定されていない場合,対話環境を起動する.

  • 入力ファイルが指定されている場合, smlsharpコマンドはリンクモードで起動される. 入力ファイルのリストには, 高々1つの.smiファイルまたは.smlファイルを含めても良い. 入力ファイルリストの中に.smiファイルが 指定されている場合,その.smiファイルから _require関係を辿って到達できる全ての.smiファイルを列挙し, 各.smiファイルに対応するオブジェクトファイルを検索し, それらオブジェクトファイルをリンクの対象とする. オブジェクトファイルの検索については, 後述する-filemapオプションの説明を参照せよ. 入力ファイルリストの中に.smlファイルが指定されている場合, その.smlファイルをコンパイルした後, その.smlファイルに対応する.smiファイルから リンク対象のオブジェクトファイルのリストを計算する. 高々1つの.smiファイルまたは.smlファイルが含まれる. .smiまたは.sml以外の入力ファイルは, システムリンカが受け付けるオブジェクトファイルやライブラリファイルを 指定する. smlsharpコマンドは,これらオブジェクトファイルのリストと SML#ランタイムライブラリをシステムリンカコマンドを起動してリンクする.

    なお,システムリンカと同様,入力ファイルを指定する順番には意味がある. 未参照シンボルを持つオブジェクトファイルは,そのシンボルを定義する オブジェクトファイルよりも前に指定されていなければならない.

    出力される実行形式ファイルのデフォルトの名前はa.outである. -oオプションによって出力ファイル名を指定することができる.