我正在学习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问题可能属于一个单独的问题.