1

我有一个使用 ocamlbuild 成功构建的项目。但是,我还想要一种简单的方法来通过顶层与来自不同模块的项目的各个功能进行交互,但是我使用 ocamlmktop 的尝试并没有达到我想要的效果。我发现除非我手动将 .cmi 文件放在活动目录中,否则我会收到“未绑定模块”错误。我目前用来构建的命令是:

ocamlfind ocamlmktop -I _build -o my_ocaml -linkpkg -package str module1.cmo module2.cmo

有没有更好、更简单的方法来让顶层在这个项目结构中工作,而无需将 cmi 文件移出 _build 目录?

编辑:我发现如果我将顶层运行为

./my_ocaml -I _build

但这似乎仍然很老套。有没有办法烘焙搜索路径或 cmi 文件?

编辑 2:考虑到接口文件的限制,我认为解决我的问题的方法实际上可能根本不编译自定义顶层。相反,我在我的 .ocamlinit 中添加了加载指令以使用这些模块。如果有人有更好的想法来解决这个问题,我将不胜感激。

4

1 回答 1

1

您可以通过在my_ocaml.mltop文件中列出所需的模块名称来构建顶层:

Module1
Module2
subdir/Module3

然后构建目标my_ocaml.top将以预期的方式调用ocamlmktop,您可以运行生成的my_ocaml.top顶层。

这不会改变您需要添加_build到包含路径以使类型检查器能够找到.cmi文件的方式。您可以在通过传递命令行参数调用顶层时执行此操作-I _build,或者从顶层使用--如果您愿意#dir "_build";;,也可以将最后一个命令放入您的。.ocamlinit

于 2017-03-10T03:08:31.797 回答