Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ocamlbuild构建库,使用ocamlfind安装库-what';最佳做法是什么?_Ocaml_Ocamlbuild_Ocamlfind - Fatal编程技术网

使用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/
中引用它们没有问题不需要。