5

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

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

我发现在 OCaml 中,有一些类似ocamlc, ocamlbuild, ocamlfind,oasis等的东西。我对它们感到非常困惑。


问题 1

谁能告诉我应该在ocamlc, ocamlbuild, ocamlfind,中使用哪一个oasis


问题2

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

但是,如果我想使用外部库,例如ocaml-batteriesor camomile,我该如何使用链接这些库ocamlbuild


问题 3

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

所以对于很多 ocaml 库,我都是opam install用来安装的。

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

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

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

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

4

1 回答 1

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:一个构建系统生成器,例如用于 C/C++ 的 autoconf&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 问题可能属于一个单独的问题。

于 2013-04-24T15:44:27.727 回答