問題タブ [ocamlbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
629 参照

ocaml - ocamlbuild でライブラリをビルドし、ocamlfind でインストールする - ベスト プラクティスは何ですか?

ライブラリを構成するモジュールをリストocamlbuildするファイルを介してOCamlライブラリをコンパイルするために使用しています。mylib.mllibその後、を使用してライブラリファイルをインストールしたいと思いますocamlfind。でビルドされたバイナリ ファイルとは異なりocamlbuild、すべてのライブラリ ファイルは_buildディレクトリにあります。次のようなものを使用してそれらをインストールする正しい方法です

または、との間により良い統合がocamlbuildありocamlfindますか?特に、-install-lib-dirフラグに気付きましたocamlbuildが、その目的に関するドキュメントが見つかりません。

私は認識してoasisいますが、今は Makefile とinstallターゲット内の問題を解決したいと考えています。これはすべて、ライブラリ マネージャーを使用するコンテキストにありますがopam、議論には関係ありません。

0 投票する
1 に答える
314 参照

interface - ライブラリに署名 (.mli) ファイルを含める

共通のデータ型が署名のみのモジュールで定義されているライブラリがあります(機能が含まれていないため、その署名を実装にコピーしても意味がありません)。

上記のセットアップでは、ocamlbuild はかなり驚くべきエラーでライブラリの作成に失敗します:

mllib ファイル内で B を指定せずにビルドできますが、タイプ バーが抽象化されます (これは意図したものではありません)。ocamlbuild を使用して署名を含める方法はありますか?

0 投票する
1 に答える
1107 参照

ocaml - ocamlbuild/ocamlfind によるライブラリのリンク

ojasmine というローカルに固定された OPAM プロジェクトがあり、これをライブラリとしてコンパイルして、test_tournabox という別のプロジェクト (最終的には JavaScript にコンパイル) で使用します。ただし、test_tournabox のコンパイルはリンク エラーで失敗しています。

ターゲット ojasmine.cma を指定して、次のように ojasmine をコンパイルします。

次に、次のようにインストールします。

ojasmine.cma が私のプロジェクト ディレクトリではなく、_build ディレクトリにあるのは奇妙に感じました。

出力は次のとおりです。

次に、cd自分の tournabox プロジェクトに移動して、テスト スイートをビルドしてみます。

これはエラーで失敗します:

ojasmine.cma が実行可能ファイル test_tournabox.byte にリンクされていないようです。しかし、私はこれを手配するために ocamlfind への -linkpkg 引数を期待しています。私は何が欠けていますか?

編集: META ファイルは次のとおりです。

ocamlobjinfo は次のとおりです。

ocamlfind はそれを見ます:

ここにあります:

ここに ojasmine.ml があります:

そして ojasmine.mli:

0 投票する
2 に答える
331 参照

ocaml - サブディレクトリを使用した Oasis ビルド構成

私は oasis を使用して ocaml プロジェクトをビルドしています。ソース コードは src というディレクトリにあります。オアシス ビルド ファイルは次のようになります。

次に、ファイルをサブフォルダーに整理し、a.mli と a.ml を src/util に配置します。これを行った後、モジュールは ocamlbuild/ocamlc から見えなくなり、'unbound module A' エラーが発生します。手動で ocamlc を呼び出す場合は、-I src/util フラグを追加して、a.mli を再び表示できるようにします。

ファイルを完全なライブラリにせずに、追加のパスを oasis 構成に追加するにはどうすればよいですか?

0 投票する
2 に答える
1053 参照

compiler-construction - OCaml コンパイラで型付き抽象構文木をトラバースする方法

OCaml プロジェクトのすべての識別子の型情報をダンプしようとしています。基本的には、型付き抽象構文ツリー ( https://github.com/ocaml/ocaml/blob/trunk/typing/typedtree.mli )をトラバースするのと同じです。 . 私は OCaml コンパイラのコードベースに慣れていないので、コンパイラが API を提供しているので、プラグインを簡単に記述してジョブを実行できるのか、それともコンパイラ コードをハックする必要があるのか​​わかりません。また、これは OCamlbuild とどのように相互作用しますか? ヒントやアドバイスをありがとう。

0 投票する
3 に答える
286 参照

ocaml - OCaml が 'Profile' フラグを設定するように _oasis を設定する方法

OCaml に既存のプロジェクトと 1 つの_oasisファイルがあります。のプロファイリング フラグを有効にする場所がわかりませんocamlbuild

Oasis のマニュアルとコードを調べたところprofile、setup.data に使用可能な変数があることがわかりました。これは、Oasis が自動生成したものだと思います。

trueに設定するには、_oasis のどこに何を含める必要がありprofileますか?

0 投票する
2 に答える
3233 参照

ocaml - OCaml で他のファイルの関数を呼び出す

長さ関数を持つ hello.ml があります。

関数を使用する call.ml:

インタープリターモード(ocaml)ではocaml call.ml結果を取得するために使用できますが、ocamlcまたはocamlbuildでコンパイルしようとすると、コンパイルエラーが発生しました。

次に、呼び出し元、呼び出し先、およびビルド コマンドを変更して、コードを実行可能ファイルにコンパイルする方法を教えてください。