使用ocamlfind和ocaml解释器,无需编译

时间:2018-04-10 06:34:09

标签: ocaml ocamlfind

我有一个文件main.ml,它使用一些使命令ocaml main.ml失败的软件包并报告此错误:

Error: Unbound module X

到目前为止,我发现的唯一解决方案是运行:

ocamlbuild main.native -use-ocamlfind -package X
./main.native

但是这会编译文件。有没有办法只使用一些额外的标志运行常规ocaml解释器(ocaml main.ml),以便找到包?

3 个答案:

答案 0 :(得分:2)

最简单的方法可能是使用topfind并在文件顶部添加#require "core"。如果要避免在文件中添加顶级指令,可以使用ocamlfind query -i-format -r计算所需的包含目录:

 ocaml $(ocamlfind query -i-format -r core) main.ml

答案 1 :(得分:1)

您可以在文件的开头放置一些查找和加载所需模块的顶级指令。例如,当我想在我的脚本中使用Core库时,我插入:

#use "topfind";;
#thread;;
#require "core";;

open Core.Std
(* Code of my script *)

要使用topfind软件包ocamlfind必须安装(opam install ocamlfind

答案 2 :(得分:1)

您还可以查询包的路径为ocamlfind:

ocamlfind query package_X

这将返回您的包裹的路径:/path_to/packageX

然后:

ocaml main.ml -I /path_to/packageX