我正在尝试创建一个可以在其他OCaml项目中使用的库,我完全迷失了.
我目前正在使用ocamlbuild
哪个非常适合吐出可执行文件,但我不知道如何从中获取库.
我发现了-a选项ocamlopt
,ocamlc
但我不确定如何使用它.我发现的文档(例如,这里)似乎假设了一些预先存在的知识.我甚至都不知道.a文件是什么.运行之后,我需要构建一个依赖于此库的项目的输出文件?我是否需要mli文件以便应用程序知道库代码的签名,或者以某种方式包含在输出中?此外,能够将所有文件打包在一起会很好,类似于Java的.jar文件.
在任何情况下,我都希望能ocamlbuild
为我做所有这些,因为如果我必须调用,ocamlopt -a
我将不得不手动指定依赖项或破解脚本ocamldep
- ocamlbuild
应该修复的东西.但是,我不知道如何告诉它建立一个库.
如果有必要,我愿意使用绿洲或OPAM或其他东西,但我想首先使用基本工具学习如何做到这一点.
OCamlbuild具有一些用于构建库的内置功能,因此您可以开始使用ocamlbuild foo.cma foo.cmxa
(假设foo.ml
是您的入口点).这将调用ocamlopt -a
并ocamlc -a
为您处理所有依赖关系管道并将生成的文件保留在其中_build
.
这应该足以让你编译一个库并从另一个程序链接它.由于这只是一个测试,你可以在上述简单点_build
与-I
编译使用该库的程序时.对于实际使用,应该打包一个库 - 当你到达那一点时,你会想要查看ocamlfind,绿洲等.
看看有关编译OCaml项目的ocaml.org教程.此外,字节码和本机代码编译器的官方手册包含有关生成和使用各种类型文件的有用细节.