如何在OCaml中编写库?

时间:2013-04-24 15:43:24

标签: ocaml ocamlbuild ocamlfind

我正在用ocaml编写一个bson编码器/解码器库。

我现在有源文件(实际上只有一个文件)。

我的问题是,我应该如何将其设为库,例如ocaml-batteries-includedcamomile等?

我的意思是,人们可以使用opam install并使用ocamlfind + ocamlbuild进行编译吗?

3 个答案:

答案 0 :(得分:5)

支持ocamlfind非常简单,没有理由不这样做。基本上,选择任何“类似”库,查找META文件,并使其适应您自己的设置。我在this StackOverflow answer中给出了一些基本的说明。

OCamlbuild是一个构建系统,您可以自由决定是否使用它,但不应该影响您的用户(除了他们将在构建程序之前安装它)。您还可以使用Makefile或任何其他构建系统(omake等)。 ocamlbuild的想法只是提供一个_tags文件,其中包含足够的信息来构建你的库/程序(如果你正在进行高级的东西,那么myocamlbuild.ml文件也是如此。再看看哪些项目具有与您类似的结构。

对于Opam,有一个packaging guide可以给出你的指示(但同样,只需调整其他人正在做的事情)。

答案 1 :(得分:2)

我会推销一些非标准但完全可用的东西:obuild。您只需要一个project.obuild文件,然后obuild build即可构建您的项目。 obuild install将使用ocamlfind安装它。

从github而不是opam安装obuild但是因为opam版本有点过时了。以下是一个示例obuild文件,可以提供您的想法:https://github.com/vbmithr/ocaml-websocket/blob/master/websocket.obuild

答案 2 :(得分:2)

前往Oasis;您基本上创建了一个描述您的库的文件_oasis。然后oasis工具将为您创建一个构建系统。您可以通过Opam安装Oasis。 有一个quick start Oasis教程可以帮助您入门。

Oasis旨在标准化OCaml包的计算机可读描述。在此期间,它可以将构建系统创建为副产品(目前基于ocamlbuild并且支持Makefile)。