我有一個文件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