6

我试图保持我的项目自包含,在项目存储库中构建和引用所有主要的 3rd 方库依赖项。我项目的主要 ocaml 部分依赖于 ocamlbuild。

但是对于像 Batteries Included 这样的复杂包,似乎强烈期望它们通过 ocamlfind 链接到一个项目中。ocamlfind 似乎假设软件包将被全局安装。(我意识到它允许环境变量及其 conf 指向备用位置,但它基本上似乎仍然是围绕包是全局配置的假设构建的——它没有等效-I-L标志来动态扩展包的搜索路径,例如,可以设置环境变量以动态覆盖 ocamlfind 配置以搜索项目本地树,但这比单纯的参数要尴尬得多,而且在不同时删除的情况下这样做似乎也很有挑战性主要系统包的可发现性site-lib,这可能也是需要的。)

对于使用 ocamlbuild 的项目,在项目本地树中构建和构建非平凡的 3rd 方包的明智策略是什么?

4

1 回答 1

3

使用环境变量(或单独的 findlib.conf)是一种可行的方法(而且很容易)。并且它不需要删除全局包的可发现性,请参阅参考手册 forpathdestdirin findlib.confOCAMLPATH分别OCAMLFIND_DESTDIR为环境变量)。

基本上,您destdir在安装项目本地包时设置为本地路径,并在使用它们时预先设置path不要忘记创建stublibs(如果您正在构建字节码二进制文件,destdir请将其添加到其中))。ld.confstdlib

PS我认为这是ocsigen-bundler中使用的方法。

请告诉您是否遇到任何问题(因为我也有兴趣使用相同的方法)。

于 2011-09-02T07:33:06.420 回答