4

我在向 ocamlmktop 添加库时遇到问题。

我有一个目录com,其中有一个目标文件com/com.cma

如果我在com目录中运行ocamlmktop com.cma -o top,那么生成的可执行文件top似乎有库;即,我可以输入“Com.foo;;” 它将在模块 Com 中给出 foo 的类型签名。

但是,如果我在com 上面的目录中运行 ocamlmktop com /com.cma -o top,那么生成的可执行文件似乎没有库;即,它响应“Com.foo;;” 带有“错误:未绑定的模块 Com”。

有没有办法包含来自不同文件夹的库,还是我需要将所有 .cma 文件放在同一个文件夹中?

另外,我正在使用 OASIS 构建系统;我可以通知 OASIS 我想要这些库的顶层吗?

编辑:

我找到了部分解决方案:ocamlc -pack a/a.cmo b/b.cmo -o Everything.cmo,然后是 ocamlmktop Everything.cmo -o top;但是,这需要复制所有库并强制它们成为单个超级模块的子模块。

4

1 回答 1

2

不能使用上面目录中的toplevel 的原因是toplevel 不包含接口文件(.cmi),当用户访问某个模块时,toplevel 需要在磁盘上找到它们。-I com所以,要么用switch加载 toplevel ,要么在加载 issue 之后加载#directory "com";;

NB OASIS 应该支持在下一个版本(0.4.0)中本地构建顶层。

于 2012-09-18T11:29:19.543 回答