6

私は新しい OCaml ユーザーです。基本的な OCaml プロジェクトのセットアップ方法について質問しましたが、まだ問題があります。TL;DR の最後にジャンプ

たとえば、Irmin を学習しようとしています。Irminのホームページで、私がしなければならないことが分かります

opam install irmin git cohttp

そうすることで、Irmin のバージョンは 0.8.3 になりました。残念ながら、Irmin のバージョンは 0.9.4 で、API が変更されているように見えるため、彼らの例を追うことはできません。そこで、依存関係として Irmin 0.9.4 だけを持つクリーンなプロジェクトを開始したいと思います。

まず、opam スイッチをセットアップしました。

 opam switch install playground -A 4.02.1

必ず白紙の状態で作業してください。次に、_oasisこのような基本的なファイルを作成しました

OASISFormat: 0.4
Name:        Playground
Version:     0.1.0
Synopsis:    OCaml playground
Authors:     Andrea Ferretti
License:     Apache-2.0
BuildTools: ocamlbuild

BuildDepends:
  irmin,
  irmin.unix,
  lwt,
  lwt.unix

次に、Irmin のホームページから例をコピーしましたexample.ml

open Lwt
open Irmin_unix
let store = Irmin.basic (module Irmin_git.FS) (module Irmin.Contents.String)
let config = Irmin_git.config ~root:"/tmp/irmin/test" ~bare:true ()
let prog =
  Irmin.create store config task >>= fun t ->
  Irmin.update (t "Updating foo/bar")  ["foo"; "bar"] "hi!" >>= fun () ->
  Irmin.read_exn (t "Reading foo/bar") ["foo"; "bar"] >>= fun x ->
  Printf.printf "Read: %s\n%!" x;
  return_unit
let () = Lwt_main.run prog

私がそうするoasis setupocamlbuild example.ml、たくさんのエラーが発生します

W: Cannot get variable ext_obj
W: Cannot get variable ext_lib
W: Cannot get variable ext_dll
W: Cannot get variable ocamlfind

つまり、私の質問は次のとおりです。

Irmin 0.9.4 に依存するクリーンなプロジェクトをセットアップする最も簡単な方法は何ですか?

4

1 に答える 1

4

したがって、まず、ファイルにアクティブなターゲットがありません_oasis。私が言いたいのは、OASIS は実行可能ファイルとライブラリーを構築するためのものだということです。あなたも説明していません。つまり、 yourはBuildDepends何の効果も持たないということです。したがって、最初の概算は次のようになります。 LibraryExecutable

OASISFormat: 0.4
Name:        Playground
Version:     0.1.0
Synopsis:    OCaml playground
Authors:     Andrea Ferretti
License:     Apache-2.0
BuildTools:   ocamlbuild
BuildDepends: irmin.unix, lwt.unix

Executable "example"
  Path: .
  MainIs: example.ml
  CompiledObject: best

そうすることで、Irmin のバージョンは 0.8.3 になりました。残念ながら、Irmin のバージョンは 0.9.4 で、API が変更されているように見えるため、彼らの例を追うことはできません。そこで、依存関係として Irmin 0.9.4 だけを持つクリーンなプロジェクトを開始したいと思います。

最新ではないバージョンを取得した場合は、次のように、その特定のバージョンが本当に必要であることを opam 制約ソルバーに納得させることができます。

 opam install irmin.0.9.4 git cohttp

また、opam の内部制約ソルバーはあまり洗練されていないため、システムに aspcud がインストールされていることを確認してください。以下は、新規の ubuntu インストールに aspcud を使用して最新の opam をインストールします。

sudo add-apt-repository --yes ppa:avsm/ppa
sudo apt-get update
sudo apt-get --yes install opam

Irmin 0.9.4 に依存するクリーンなプロジェクトをセットアップする最も簡単な方法は何ですか?

まあ、シンプルさは個人的な意見の問題です。たとえば、フィールドを にopam設定したファイルを使用するだけで、オアシスをまったく使用せずに同じことを行うことができますが、どれだけうまくスケーリングされますか...build["ocamlbuild"; "-use-ocamlfind"; "-pkgs irmin.unix,lwt.unix"; "example.native"]

于 2015-03-09T14:22:57.577 に答える