我有一个文件main.ml
,它使用一些使命令ocaml main.ml
失败的软件包并报告此错误:
Error: Unbound module X
到目前为止,我发现的唯一解决方案是运行:
ocamlbuild main.native -use-ocamlfind -package X
./main.native
但是这会编译文件。有没有办法只使用一些额外的标志运行常规ocaml解释器(ocaml main.ml
),以便找到包?
答案 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