我在向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;但是,这需要复制所有库并强制它们成为单个超模块的子模块。
答案 0 :(得分:2)
您无法从上面的目录中使用顶层的原因是顶层不包含接口文件(.cmi),并且当用户访问某个模块时,顶层需要在磁盘上找到它们。因此,使用-I com
开关加载顶级或加载问题#directory "com";;
后。
NB OASIS应支持在下一版本(0.4.0)中本地构建toplevel。