【发布时间】:2019-11-07 22:29:30
【问题描述】:
我正在尝试按照这些说明编译一个依赖于我创建的另一个模块的模块:https://ocaml.org/learn/tutorials/modules.html
就我而言,我有一个模块 ~/courseFiles/chapter5/moduleA.ml 和另一个模块 ~/OCamlCommons/listMethods.ml。我使用ocamlopt -c listMethods.ml 编译了listMethods.ml,这似乎有效,它生成了一个文件listMethods.cmx。
文件moduleA.ml 包含open ListMethods;;。现在我的终端位于~/courseFiles/chapter5,我运行ocamlopt -c moduleA.ml,但终端返回
错误:未绑定的模块 ListMethods
现在我可以理解它为什么会这样做,但该网站上的说明似乎表明我所做的就是你应该如何做到这一点。大概我在编译moduleA.ml时需要传入脚本或可执行文件的位置,但我不确定语法应该是什么。我尝试了一些猜测,并猜测如何使用ocamlfind 做到这一点,但我没有成功。我尝试查找有关编译位于不同目录中的模块的说明,但没有找到任何东西(或者任何我能理解的东西)。
【问题讨论】:
-
使用
-I选项,例如ocamlopt -I ~/OCamlCommons -c moduleA.ml。见man ocamlopt或caml.inria.fr/pub/docs/manual-ocaml-4.00/manual025.html -
我还建议您学习如何使用自动构建系统,例如
dune,以防止手动编译的麻烦。