エコシステムの初心者には、小規模から中規模の OCaml プロジェクトを構築および管理するための標準的に推奨される方法が不明です。, &c.の基本を理解しています。これらはocamlc
、従来の UNIX C コンパイラを十分に反映しており、単純に見えます。しかし、個々のファイルの 1 回限りのコンパイルのレベルを超えて、コンパイルを単純かつクリーンに管理する最善の方法は不明です。問題は潜在的なツールを探すことではなく、標準的な OCaml プロジェクトを構造化および構築するための (コミュニティの経験によって検証された) 1 つまたはいくつかの正しい (十分な) 方法を見つけることです。
私のモデルの使用例は、純粋な OCaml または OCaml と C の依存関係の、ささやかな、しかし重要なプロジェクトです。そのようなプロジェクト:
- 多数のソースファイルが含まれています
- 多くの標準ライブラリへのリンク
- 1 つ以上のサードパーティ ライブラリへのリンク
- オプションで、サブプロジェクトとして C ライブラリと OCaml ラッパーを含めます (ただし、(3) のように、これを個別に管理してサードパーティ ライブラリとして含めることもできます)。
いくつかの代替ツールが際立っています。
- カスタム Makefile は、ほとんどのオープン ソース OCaml パッケージで共通の標準のように見えますが、イライラするほど冗長で複雑に見えます。控えめな C/C++ プロジェクトよりもさらに複雑です。さらに悪いことに、多くの一見単純な OCaml ライブラリでさえ、autoconf/automake を上に重ねてさらに複雑にしています。
- ocamlbuildは、最小限の構成でビルドを自動化するための最新の合理化されたメカニズムを提供しているように見えますが、初心者向けに十分に文書化されておらず、OCaml エコシステムの紹介資料で例として示されておらず、公開されているさまざまな OCaml プロジェクトのいずれでも目に見えて使用されていません。インスピレーションを求めて閲覧しました。
- OASISは、Cabal のようなパッケージ マネージャーとライブラリの構築をサポートするために、他のビルド システムの上にある規約とライブラリ コードのレイヤーのようです。
(私はまた、OCaml を含む一般的な言語の標準ルール一式を含む自称 " " のように見えるOMakeと、GNU の標準ルールのテンプレートを提供するocaml-make (旧称 OCamlMakefile) を見てきました。)make++
make
これらのいずれかが、OCaml ビルドを管理する好ましい最新の方法ですか?
プロジェクト ファイルはどのように構成するのが最適ですか?
サードパーティのライブラリの依存関係はどのように含まれ、管理されていますか? それらをシステム レベルでインストールすることをお勧めしますか、それともプロジェクトに対してローカルでそれらを管理する標準的で簡単な方法はありますか? 私は、プロジェクトが可能な限り自己完結型のままであるモデルを好みます。