【发布时间】:2015-03-09 13:55:22
【问题描述】:
我是 OCaml 的新用户。我已经要求a question 学习如何建立一个基本的 OCaml 项目,但我仍然有问题。跳转到最后一个 TL;DR
例如,我正在尝试学习 Irmin。在home page of 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 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 的干净项目的最简单方法是什么,确保它是自包含的(它不会依赖于构建过程安装的库以外的预安装库)?
【问题讨论】:
-
Irmin 在官方存储库中被标注为 0.9.3。是您的问题中的拼写错误还是您很长时间都忘记了
opam update? -
他也可能有一些依赖项迫使他降级。虽然,我在安装大量软件包的情况下安装它没有问题。
-
当您没有 aspcud 时,这是一个常见的问题。很多时候它会降级所有内容。
标签: ocaml ocamlbuild opam oasis