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