我是一名新的OCaml用户。 我已经提出了一个问题,以了解如何设置基本的OCaml项目,但我仍然有问题。 跳到结尾查看TL;DR。
例如,我正在尝试学习Irmin。 在Irmin的主页上,我看到我必须执行以下操作。
如果我执行
例如,我正在尝试学习Irmin。 在Irmin的主页上,我看到我必须执行以下操作。
opam install irmin git cohttp
这样做,我最终得到了Irmin 0.8.3版本。不幸的是,我无法按照他们的例子操作,因为似乎Irmin已经更新到了0.9.4版本,并且API已经发生了变化。因此,我想开始一个全新的项目,只依赖于Irmin 0.9.4。
首先,我已经设置了一个opam switch环境:
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 setup
然后执行 ocamlbuild 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的最简单方法,确保它是自包含的(它不会依赖于除了构建过程安装的库之外的预安装库)?
opam update
? - PatJ