ocamlmktop与绿洲

我在向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;但是,这需要复制所有库并强制它们成为单个超级模块的子模块.

最佳答案 你不能从上面的目录中使用的原因是,顶层不包括接口文件(.cmi),当用户访问某个模块时,顶层需要在磁盘上找到它们.因此,无论是使用-I com切换加载到顶层还是在加载问题后加载#directory“com”;;.

NB OASIS应支持在下一版本(0.4.0)中本地构建toplevel.

点赞