我有一个文件Tools.ml
,其中包含我自己编写的一些常用实用函数。在.../Code/
下我有几个文件夹,每个文件夹都包含一个项目。我的问题是我应该在什么地方放置这个Tools.ml
,以便.../Code/
下的所有文件夹和文件可以通过Open Tools
共享此模块。在OCaml中放置共享公用程序模块的位置?
希望我的问题很清楚......有没有人有很好的解决方案?
EDIT1:继@ gasche的回答,我已经写tools.ml
如下:
module Tools =
struct
let a_function = ...
...
end
然后我编译它,并做了ocamlfind install tools META tools.cmo tools.cmx tools.ml
的建议,看起来进展顺利。然后,我已经写了test.ml
如下:
open Tools
let f = Tools.a_function
然后我编译它,然后我得到了一个错误:
File "test.ml", line 1, characters 0-1:
Error: Error while linking test.cmo:
Reference to undefined global `Tools'
谁能告诉我发生了什么?
感谢您的评论......您可以看看我在OP中的测试吗? – SoftTimur 2012-01-02 05:39:27
@SoftTimur:在你的情况下,正确的编译命令是'ocamlfind ocamlc -package tools -linkpkg test.ml -o test'。 '-package工具'选项添加软件包,'-linkpkg'选项链接它以生成可执行文件(在生成可执行文件时需要,而不是在编译为'.cmo'时需要)。你也可以使用'ocamlbuild -tag'包(工具)“test.byte”(未测试)。 – gasche 2012-01-02 06:48:14
@gashe:'ocamlfind ocamlc -package tools -linkpkg test.ml -o test'只有在'test.ml'与可执行文件'tool'位于同一个文件夹中时才起作用...你知道为什么吗? – SoftTimur 2012-01-02 08:34:08