我已閱讀this question等, 但我的編譯問題尚未解決。OCaml模塊的單獨編譯
我測試單獨的編譯與這些文件:
testmoda.ml
module Testmoda = struct
let greeter() = print_endline "greetings from module a"
end
testmodb.ml
module Testmodb = struct
let dogreet() = print_endline "Modul B:"; Testmoda.greeter()
end
testmod.ml
let main() =
print_endline "Calling modules now...";
Testmoda.greeter();
Testmodb.dogreet();
print_endline "End."
;;
let _ = main()
現在我產生.mli fil e
ocamlc -c -i testmoda.ml >testmoda.mli
和testmoda.cmi在那裏。
接下來,我創建一個沒有錯誤的.cmo文件:
ocamlc -c testmoda.ml
很好,所以做同樣的testmodb.ml:
[email protected]:~/Ocaml/ml/testmod> ocamlc -c -i testmodb.ml >testmodb.mli
File "testmodb.ml", line 3, characters 45-61:
Error: Unbound value Testmoda.greeter
闖闖:
[email protected]:~/Ocaml/ml/testmod> ocamlc -c testmoda.cmo testmodb.ml
File "testmodb.ml", line 3, characters 45-61:
Error: Unbound value Testmoda.greeter
其他組合也失敗了。
如何編譯testmodb.ml和testmod.ml?這應該很容易 - 沒有ocamlbuild/omake/ 綠洲,我想。在文件
語法錯誤被排除在外, 如果我的貓在一起,以一個文件(之間所需的空間)彙編 和完美的執行。
哦奇蹟,沒有明確的模塊定義它按預期工作,'ocamlc -c testmoda.ml'創建.cmi和。cmo,後者可用於編譯testmod.ml - 單獨編譯。 –
(無法編輯評論)所以在這裏單獨編譯:'ocamlc -c testmoda.ml; ocamlc -c testmodb.ml; ocamlc -o testmod testmoda.cmo testmodb.cmo testmod.ml' –
請注意,我給出的單個命令也會分開編譯:-)它完全等同於這三個命令。但是,當然有時候你只想編譯一個源文件。它也適用於'testmod.ml'。 –