我正在用ocaml编写一个bson编码器/解码器库。
我现在有源文件(实际上只有一个文件)。
我的问题是,我应该如何将其设为库,例如ocaml-batteries-included
,camomile
等?
我的意思是,人们可以使用opam install
并使用ocamlfind
+ ocamlbuild
进行编译吗?
答案 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)。