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

时间:2013-04-24 15:20:45

标签: compilation ocaml

我正在OCaml中学习更复杂的编辑。

首先我不是C程序员,我真的不知道什么是make等等。我正在使用Mac OS X terminal,我也是一名Java程序员。

我发现在OCaml中有一些内容,例如ocamlcocamlbuildocamlfindoasis等等。我对它们非常困惑。


问题1

有人可以告诉我在ocamlcocamlbuildocamlfindoasis中应该使用哪一个?


问题2

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

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


问题3

这是一个关于所有外部库的更实际的问题。

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

  1. 为什么需要安装库?我的意思是,在Java中,通常我们只是将lib复制到某个地方,然后将lib的路径包含到-classpath-cp中。那么为什么我们需要安装OCaml库?

  2. opam install lib之后,例如camomile(对于utf8),发生了什么以及会发生什么?这种安装只是下载lib的源文件并将其复制到某个地方吗?

  3. 怎么能找到这个库呢?例如,如果我opam install camomile,那么如何在我自己的代码中链接或使用它们呢?

  4. 通常如何使用ocaml library?例如,对于camomilehttp://camomile.sourceforge.net/dochtml/index.html),他们有三个模块:CamomileLibrary等。所以我应该open我的代码中的模块,对吧?

    < / LI>

1 个答案:

答案 0 :(得分:2)

工具:

  • 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&amp; automake for C / C ++,但更简单

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

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

opam问题可能属于另一个问题。