如何在OCaml中很好地管理编译?

我正在学习OCaml中更复杂的编译.

首先,我不是C程序员,我真的不知道是什么制作等等.我使用的是Mac OS X终端,我也是一名Java程序员.

我发现在OCaml中,有一些东西,如ocamlc,ocamlbuild,ocamlfind,oasis等.我对它们非常困惑.

问题1

任何人都可以告诉我在ocamlc,ocamlbuild,ocamlfind,oasis中应该使用哪一个?

问题2

我试过这个教程http://nicolaspouillard.fr/ocamlbuild/ocamlbuild-user-guide.html,这对ocamlbuild很有用.

但是,如果我想使用ocaml-battery或camomile等外部库,我如何使用ocamlbuild链接这些库?

问题3

这是关于所有外部库的更实际的问题.

因此,对于许多ocaml库,我使用opam install来安装它们.

>为什么需要安装库?我的意思是,在Java中,通常我们只是将lib复制到某个地方,然后将lib的路径包含在-classpath或-cp中.那么为什么我们需要安装OCaml库?
>在opam安装了一个lib之后,比如甘菊(对于utf8),发生了什么以及会发生什么?这种安装只是下载lib的源文件并将其复制到某个地方吗?
>那怎么能找到图书馆?例如,如果我opam安装甘菊,那么我如何在我自己的代码中链接或使用它们?
>通常如何使用ocaml库?例如,对于甘菊(http://camomile.sourceforge.net/dochtml/index.html),他们有三个模块:CamomileLibrary等.所以我应该在我的代码中打开模块,对吗?

最佳答案 工具:

> ocamlc:OCaml到字节码编译器
> ocamlopt:OCaml到本机代码编译器
> ocamlfind:使用ocamlc和ocamlopt包装来编译/链接各种OCaml包,即使用“ocamlfind ocamlopt -package camomile -c yourfile.ml”来编译yourfile.ml,
并使用’ocamlfind ocamlopt -package camomile yourfile.cmx -linkpkg -o yourfile’来创建可执行文件
> oasis:一个构建系统生成器,如autoconf和用于C/C++的automake,但更简单

使用最近的ocamlbuild,您可以使用’ocamlbuild -use-ocamlfind -pkg -pkg …’作为使用ocamlfind包package1,package2构建项目的快速方法.
下一步是使用’ocamlbuild -use-ocamlfind’并将package()指令放在_tags文件中.

但是,我建议尝试oasis,它简化了为您的项目创建构建系统.
如果你想看看使用oasis或ocamlbuild时“幕下”会发生什么,请参阅_build / _log文件.它包含所有ocamlfind / ocamlc / ocamldep / ocamlopt调用.

opam问题可能属于一个单独的问题.

点赞