2011-05-05 42 views
4

为了使OCaml库与其余的安装过程良好地协作,可以与ocamlfind等无缝协作,我需要在我的installuninstall目标中使用012amOCaml库。基本上是一个“好公民”。目前我对GODI不感兴趣。谢谢!用于安装OCaml库的Makefile文件

+0

这是OCaml绑定到C库,可以假设存在,FWIW。 – Gaius 2011-05-05 08:44:54

回答

6

用于ocamlfind的META文件很容易编写(基本上,您可以在另一个ocaml项目中查找META¹,将其复制并进行相应的更改),并且它们将为您提供ocamlfind集成,特别是对邮寄的简单支持 - 建立安装和拆卸(使用ocamlfind installocamlfind remove)。你应该从那开始。

¹:例如我从batteries's META获取灵感。

Makefile的构建部分更棘手,它们有许多解决方案(OCamlMakefile,OMake,ocamlbuild,普通的Makefile等),具有不同的长处和弱点。如果你的项目很简单,我会推荐ocamlbuild,它自己负责很多依赖关系跟踪。

您也可以使用Oasis,这是一个相对较新的工具,它建立在ocamlbuild和ocamlfind之上,旨在为预构建配置和各种构建和部署提供统一的配置文件(您的程序,您的软件库,随附资料或文件......)。它还不是一个成熟的项目(它的小兄弟Oasis-DB还没有发布),但是我鼓励你如果有时间就试试看。它比META复杂一些,因为它最终会做得更多,因此首先构建META仍然是一个很好的步骤。最后,你说你对Godi不感兴趣(Godi是一个非常好的系统,在某些情况下(比如BSD等),这是一个优秀的OCaml安装选择),但是如果你可能仍然对Godiva感兴趣,它是帮助构建GODI包的工具。不过,我从来没有使用过它。

+0

我的意思是没有任何反对GODI的 - 只是现在对我而言已经超出了范围。我现在正在使用一个普通的老式Makefile(因为我也有C代码来编译)。所以这个过程是,创建一个META文件,然后让ocamlfind代表我做实际的工作? – Gaius 2011-05-06 10:24:24

+1

对于系统中的安装/卸载,并使其他程序员可以轻松使用您的库,是的,“ocamlfind”是您所需要的。基本上,您只需给ocamlind install META文件以及要安装在ocaml库目录中的(编译的,.mli等)文件列表,然后就完成了。 – gasche 2011-05-06 10:58:11

4

我不使用makefiles,而是使用ocamlbuild和shell脚本来安装软件I distribute。 Debian人员用这些脚本为我的软件打包没有问题。所以你可能想检查它们,因为它们符合它们的一些要求(例如字节和本地代码的单独目标)。

您可能还想看看 到packaging policy,但我不知道这个文档是否仍然是最新的。

不要忘记为ocamlfind添加一个META文件。并且您可能还想为即将推出的oasis-db项目包含_oasis文件(尚未在我分发的软件中完成)。