Ch.21 SML#コンパイラの起動

§ 21.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オプション で出力ファイル名を指定することができる.

-M

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

-MM

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

-Ml

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

-MMl

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

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

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

  • 入力ファイルが指定されている場合, smlsharpコマンドは指定されたファイル群をひとつの実行形式ファイルに リンクする. このとき,入力ファイルには, .smiファイル, .smlファイル,および システムリンカが解釈可能な任意のオブジェクトファイルやライブラリファイル を指定することができる. ただし, .smiファイルあるいは.smlファイルは, どちらか片方が高々1つのみ指定されていなければならない. .smiファイルが指定されている場合, その.smiファイルをトップファイルとして SML#プログラムのリンクを行う. このときSML#コンパイラは,_require関係を辿りプログラム を構成する.smiファイルを列挙し, 各.smiファイルに対応するオブジェクトファイルを検索し, それらのオブジェクトファイルをリンクする. オブジェクトファイルの検索については, 後述する-filemapオプションの説明を参照せよ. .smlファイルが指定されている場合, その.smlファイルをコンパイルし, かつその.smlファイルに対応する.smiファイルを トップファイルとしてSML#プログラムをリンクする.

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

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