使用ocamlbuild构建库,使用ocamlfind安装库-what';最佳做法是什么?
我正在使用使用ocamlbuild构建库,使用ocamlfind安装库-what';最佳做法是什么?,ocaml,ocamlbuild,ocamlfind,Ocaml,Ocamlbuild,Ocamlfind,我正在使用ocamlbuild通过一个mylib.mllib文件编译一个OCaml库,该文件列出了组成库的模块。之后,我想使用ocamlfind安装库文件。与使用ocamlbuild生成的二进制文件不同,所有库文件都位于\u build目录中。使用以下内容安装它们是否正确 ocamlfind install META _build/a.cma _build/a.cmxa ... 或者在ocamlbuild和ocamlfind之间是否有更好的集成?特别是,我注意到ocamlbuild的-inst
ocamlbuild
通过一个mylib.mllib
文件编译一个OCaml库,该文件列出了组成库的模块。之后,我想使用ocamlfind
安装库文件。与使用ocamlbuild
生成的二进制文件不同,所有库文件都位于\u build
目录中。使用以下内容安装它们是否正确
ocamlfind install META _build/a.cma _build/a.cmxa ...
或者在ocamlbuild
和ocamlfind
之间是否有更好的集成?特别是,我注意到ocamlbuild
的-install lib dir
标志,但找不到有关其用途的文档
我知道有
oasis
,但现在我想在Makefile和install
目标中解决这个问题。所有这些都是在使用opam
库管理器的情况下进行的,但这对讨论不重要。不,没有具体的集成ocamlbuild
不知道预构建(配置)和后构建(安装)工具,而ocamlfind
同样不知道构建工具
您认为ocamlbuild
不太擅长从\u build/
可靠地模拟链接目标,这是正确的。这是一个已知的小故障,但您应该可以自由处理对您来说是问题的特定情况。无论如何,我认为最好直接参考\u build/
中的文件
Daniel Bünzli的一个建议是让ocamlbuild帮助生成OPAM的
。安装文件,而不是手工编写(或编写文件脚本)。我个人没有时间研究这些功能,但我非常欢迎在这方面做出任何ocamlbuild贡献。您可能知道opam提供了一种安装文件的机制,我只是想提一下以防万一。您提到的选项会覆盖ocamlbuild库所在的默认目录(通常/usr/lib/ocaml/ocamlbuild/
)。请尝试ocamlbuild-where
,然后使用该选项和虚拟路径重试以检查其效果。ocamlbuild和ocamlfind安装之间没有特定的集成。ocamlfind支持在首次发布后很长一段时间已添加到ocamlbuild中,并且最初ocamlbuild并不打算使用ocamlfind。因为项目ocamlbuild已经被其新的维护者接管,开始支持ocamlfind的包管理功能,但安装不在ocamlbuild的职责范围内,这就是为什么oasis和opam开始工作的原因。ocamlfind提供编译支持和安装支持,但在这两种情况下,您都需要围绕它编写一些脚本来处理ole进程(即,它用于其他工具,如make)。我的构建过程是由Make驱动的,我对此很满意。我有点惊讶,一些构建目标被ocamlbuild符号链接到\u build/
中,而其他的,尤其是库文件,则不是。因此,我对安装这些目标的最佳实践提出了疑问。如果这是什么,我在\u build/
中引用它们没有问题不需要。