これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド ocaml.m4 です。
プログラム:
NAME
ocaml.m4 - OCaml の Autoconf マクロ
概要
AC_PROG_OAML
AC_PROG_FINDLIB
AC_PROG_OCAMLLEX
AC_PROG_OCAMLYACC
AC_PROG_CAMLP4
AC_CHECK_OCAML_PKG([名前])
AC_CHECK_OCAML_MODULE(変数、名前、モジュール、インクルードパス)
AC_CHECK_OCAML_WORD_SIZE
DESCRIPTION
ocaml.m4 OCaml を検出するための標準の便利な autoconf マクロを含むファイルです。
autoconf によって生成された ./configure スクリプト内の findlib、OCaml パッケージなど。
これらのマクロの使用を開始するには、「ocaml.m4」ファイル (通常は次の場所にあります) をコピーする必要があります。
"/usr/share/aclocal/ocaml.m4") をプロジェクトの autoconf マクロ ディレクトリに追加します。 通常は
これはプロジェクトの「m4/」ディレクトリですが、ディレクトリは次のコマンドを使用して変更できます
「AC_CONFIG_MACRO_DIR(DIR)」ディレクティブ。 「m4/」ディレクトリを作成したばかりの場合は、
あなたもする必要があるかもしれません:
アローカル -I m4
次に、以下で説明するマクロのいずれかを「configure.ac」に追加できます (または
"configure.in")。 ほとんどすべての OCaml プロジェクトは、最初に "AC_PROG_OCAML" を使用する必要があります。
その直後に「AC_PROG_FINDLIB」。
このマニュアルページでは、autoconf の使用方法については説明していません。 そのためには、
詳細な autoconf 情報ファイル (「info autoconf」)。
AC_PROG_OAML
このマクロは、通常の OCaml ツールチェーンのどのツールが利用可能かを検出します。 それは定義し、
次の変数を置き換えます。
バイトコード コンパイラの名前に設定された OCAMLC
(例: 「ocamlc」または「ocamlc.opt」)、または「いいえ」の場合
OCaml のインストールが見つかりませんでした
OCAMLOPT ネイティブ コード コンパイラの名前。 "オカムロプト",
「ocamlopt.opt」または「いいえ」
OCAMLBEST "byte" (バイトコード コンパイラのみが利用可能な場合)
または "opt" (バイトコードとネイティブ コード コンパイラの両方の場合)
ご利用いただけます)
OCAMLDEP 依存関係リゾルバーの名前。 "ocamldep"
OCAMLMKTOP ocamlmktop の名前
OCAMLMKLIB ocamlmklib の名前
OCAMLDOC ocamldoc の名前
OCAMLBUILD ocamlbuild の名前
OCAMLLIB OCaml ライブラリ パス (例: C )
OCAMLVERSION コンパイラのバージョン (例: C<3.11.0>)
検出 if OCaml is インストール
これらのマクロの古いバージョンとは異なり、「AC_PROG_OCAML」は OCamlがない場合は終了
インストールが検出されました。 したがって、OCaml がインストールされているかどうかを検出したい場合は、
このようなことをするには:
AC_PROG_OAML
if test "$OCAMLC" = "いいえ"; それから
AC_MSG_ERROR([OCaml コンパイラをインストールする必要があります])
fi
この動作と使用パターンは、「AC_PROG_*」の他のマクロと一致しています)。
家族。
クロスコンパイル
クロスコンパイルのために構成スクリプトが呼び出されると、「AC_PROG_OCAML」が検出されます
OCaml コンパイラのクロスコンパイラ バージョン。 "OCAMLC=i686-pc-mingw32-ocamlc"
これは自動的に行われ、ほとんどの場合、気にする必要はありません。
AC_PROG_FINDLIB
このマクロは、ocamlfind プログラム (findlib の一部) の存在をチェックします。 定義する
「OCAMLFIND」を ocamlfind プログラムの名前に置き換えます。見つからない場合は「no」を指定します。
ocamlfind が見つからなくても、このマクロは失敗しないことに注意してください。 強制したい場合は
ユーザーがfindlibをインストールするには、次のことを行う必要があります。
AC_PROG_FINDLIB
if test "$OCAMLFIND" = "いいえ"; それから
AC_MSG_ERROR([OCaml findlib (ocamlfind コマンド) をインストールする必要があります])
fi
「AC_CHECK_OCAML_PKG」も参照してください。
AC_PROG_OCAMLLEX
これにより、ocamllex プログラムがチェックされ、「OCAMLLEX」がプログラムの名前に設定されます (例:
"ocamllex" または "ocamllex.opt")、見つからない場合は "no"。
AC_PROG_OCAMLYACC
これにより、ocamlyacc プログラムがチェックされ、「OCAMLYACC」がプログラムの名前に設定されます。
見つからない場合は「いいえ」。
AC_PROG_CAMLP4
これはcamlp4をチェックし、バージョンが見つかったコンパイラのバージョンと一致することをチェックします
以前。 基本的なcamlp4プログラムの名前に「CAMLP4」を設定するか、そうでない場合は「no」を設定します
発見した。
このマクロは、camlp4o、camlp4orf などの camlp4 スイートの他のツールもチェックします。
それらのそれぞれについて、完全に大文字の変数がツール名に設定されます (または、そうでない場合は「いいえ」)
見つかった); .in ファイルを埋めるときに、すべての変数が置き換えられます。 ツールの完全なリスト
それぞれの変数名は次のとおりです。
カムルプ4 CAMLP4
camlp4boot CAMLP4BOOT
camlp4o CAMLP4O
camlp4of CAMLP4OF
カムルプ4oof CAMLP4OOF
camlp4orf CAMLP4ORF
camlp4prof CAMLP4PROF
カムルプ4r CAMLP4R
カムルプ4rf CAMLP4RF
AC_CHECK_OCAML_PKG
これは、OCaml findlib パッケージの存在を検出するために使用できるメイン マクロです。
このマクロは、ocamlfind を使用して findlib パッケージを検索します (したがって、findlib が必要です)。
自体がインストールされていること、およびパッケージが META で適切にパッケージ化されていること
ファイルなど)でインストールされていないOCamlのfindlibパッケージを見つけたい場合
findlib の場合は、代わりに「AC_CHECK_OCAML_MODULE」を使用してみてください。
AC_CHECK_OCAML_PKG([名前])
指定された名前の OCaml findlib パッケージをチェックします。 見つかった場合は、定義し、
「名前」の部分が変数「OCAML_PKG_name」に置き換えられます
すべてのダッシュをアンダースコアに置き換えてパッケージ名を変更します。
たとえば、
AC_CHECK_OCAML_PKG([xml-light])
「OCAML_PKG_xml_light」を「xml-light」または「no」に設定します。
パッケージがインストールされていない場合に構成スクリプトが失敗するようにするには、次のようにします。
AC_CHECK_OCAML_PKG([foo])
if test "$OCAML_PKG_foo" = "いいえ"; それから
AC_MSG_ERROR([OCaml findlib モジュール 'foo' をインストールしてください。])
fi
Makefile.in で、ocamlfind と組み合わせて置換変数を使用します。
.ml.cmo:
$(OCAMLFIND) ocamlc -package @OCAML_PKG_foo@ -c $< -o $@
置換変数でも、ダッシュがアンダースコアに置き換えられていることに注意してください。
チェック for 代替案 検索ライブラリ パッケージ 名
同じライブラリが異なる findlib パッケージに対応する (ありそうもない) ケース
異なるシステム上の名前、代替をチェックすることで移植性を向上させることができます
"AC_CHECK_OCAML_PKG" に XNUMX 番目の引数を渡す名前:
AC_CHECK_OCAML_PKG(PKGNAME,代替名)
「PKGNAME」が見つかった場合の動作は以前と同じです。 それ以外の場合は、すべての名前
「ALTERNATIVE-NAMES」は、findlib パッケージ名として順番にテストされます。 見つかった場合、それは
マクロによって設定された値として設定され、.in ファイルで置換されます。 それ以外の場合は「いいえ」が設定されます。
変数名は「PKGNAME」によって決定されますが、値は
実際の代替名が見つかりました。
たとえば、「zip」または「camlzip」と呼ばれる camlzip findlib パッケージを検出するには、
見つかった値を "OCAML_PKG_zip" 変数に保存するには、configure.ac で次のようにします。
AC_CHECK_OCAML_PKG(zip,camlzip)
次のような移植可能な Makefile.in ビルドラインがあります。
.ml.cmo:
$(OCAMLFIND) ocamlc -package @OCAML_PKG_zip@ -c $< -o $@
AC_CHECK_OCAML_MODULE(変数、名前、モジュール、インクルードパス)
"AC_CHECK_OCAML_MODULE" は、"AC_CHECK_OCAML_PKG" の代替です。 あなたがすべき
可能であれば、常に "AC_CHECK_OCAML_PKG" と ocamlfind/findlib を使用してください。
パラメータは次のとおりです。
変数
これは、設定されている環境変数です。 インクルードに設定されます
パス、またはモジュールが見つからない場合は「いいえ」。
NAME
これは、探しているモジュールの名前です。 このパラメーターは、
メッセージを表示し、モジュールの検索方法には影響しません。
モジュール
これは、検索されるモジュール名を表す OCaml モジュール名であるべきです。
ここにサブモジュールを配置できます。 「CalendarLib.Date」
インクルードパス
これは、検索するインクルード ディレクトリのデフォルト リストです。 「+カレンダー」
たとえば、次のコードは OCaml Calendar モジュールをチェックし、
このモジュールのバージョン 1 とバージョン 2 (互換性のない API を持つ) を区別します。
AC_CHECK_OCAML_PKG(カレンダー)
AC_CHECK_OCAML_MODULE(is_calendar2,calendar,[CalendarLib.Date],[+calendar])
上記のコードを実行すると、変数「OCAML_PKG_calendar」と「is_calendar2」が
次のように設定します。
OCAML_PKG_calendar is_calendar2 結果
はい +calendar カレンダー v2 がインストールされています
はい いいえ Calendar v1 がインストールされています
いいえ いいえ いいえ いいえ カレンダーモジュールがインストールされています
AC_CHECK_OCAML_WORD_SIZE
これは、OCaml コンパイラのワード サイズをチェックし、"OCAML_WORD_SIZE" を 32 のいずれかに設定します。
または64。
onworks.net サービスを使用してオンラインで ocaml.m4 を使用する