Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ocamlmktop带绿洲_Ocaml - Fatal编程技术网

ocamlmktop带绿洲

ocamlmktop带绿洲,ocaml,Ocaml,向ocamlmktop添加库时遇到问题 我有一个目录com,其中有一个对象文件com/com.cma 如果我在com目录中运行ocamlmktop com.cma-o top,则生成的可执行top似乎具有库;i、 我可以输入“Com.foo;;”,它将在模块Com中给出foo的类型签名 但是,如果我在com上面的目录中运行ocamlmktop com/com.cma-o top,则生成的可执行文件似乎没有库;i、 它对“Com.foo;;”的响应是“Error:unboundmodulecom”

向ocamlmktop添加库时遇到问题

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

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

但是,如果我在com上面的目录中运行ocamlmktop com/com.cma-o top,则生成的可执行文件似乎没有库;i、 它对“Com.foo;;”的响应是“Error:unboundmodulecom”

有没有办法包括来自不同文件夹的库,或者我需要将所有.cma文件放在同一个文件夹中

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

编辑:


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

您不能从上面的目录使用toplevel的原因是toplevel不包括接口文件(.cmi),当用户访问某些模块时,toplevel需要在磁盘上找到它们。因此,要么使用
-icom
开关加载toplevel,要么在加载问题
#目录“com”之后加载toplevel


注意:OASIS应在下一版本(0.4.0)中支持本机构建顶级版本。

OASIS仍然不支持构建顶级版本,但是手动操作很容易-只需创建包含模块列表的常规
top.mltop
文件,调用
ocamlbuild top.top
并运行toplevel,以便它可以访问构建工件:
CAML\u LD\u LIBRARY\u PATH=\u build:$CAML\u LD\u LIBRARY\u PATH./top.top-I\u build