Compiler construction 什么';编译OCaml项目是一种非常简单的方法吗?

Compiler construction 什么';编译OCaml项目是一种非常简单的方法吗?,compiler-construction,ocaml,build-system,ocamlbuild,Compiler Construction,Ocaml,Build System,Ocamlbuild,我在玩弄OCaml。我想知道的第一件事是如何构建一个OCaml项目。现在,我只是想要一些简单的东西,因为我只是在学习。有谁能告诉我一个构建系统以及一个使用该构建系统的“hello world”类型的示例吗?您可能正在寻找一个。看一看 解释编译基础知识。在该页面的底部有一个名为“自动生成系统”的部分,以及使用GNU make编译和使用Omake编译的主题链接,这两个主题都包括示例。ocamlopt是标准的本机代码编译器。典型的生成语法是: ocamlopt -o execname module1.

我在玩弄OCaml。我想知道的第一件事是如何构建一个OCaml项目。现在,我只是想要一些简单的东西,因为我只是在学习。有谁能告诉我一个构建系统以及一个使用该构建系统的“hello world”类型的示例吗?

您可能正在寻找一个。看一看


解释编译基础知识。在该页面的底部有一个名为“自动生成系统”的部分,以及使用GNU make编译
和使用Omake编译
的主题链接,这两个主题都包括示例。

ocamlopt是标准的本机代码编译器。典型的生成语法是:

ocamlopt -o execname module1.ml module2.ml
您可以使用
ocamlc
编译成字节码

通常,标准库已经包含在内。如果您使用的是*nix系统,并且希望包括(比如)unix库,您可以执行以下操作

ocamlopt -o execname unix.cmxa module1.ml module2.ml
cmxa文件是本机代码库,cma文件是字节码库

对于更复杂的构建,有ocamlfind程序帮助定位库。您还可以使用gnumake和类似的工具。可以找到更多信息。是一个关于使用gmake的页面

是“编码器的第一个Ocaml”页面。
这是我在大学时参加的Ocaml课程的讲课页面。不过,不要试图向冈特教授寻求任何提示,如果记忆还不错的话,她是一个邪恶的巨魔。

看看马库斯·莫特尔的作品。该项目包括
OCamlMakefile
。将其复制到源目录中,并创建一个
Makefile
,例如:

SOURCES = hello.ml
RESULT  = hello
-include OCamlMakefile

您可能知道这一点,但为了以防万一,OCaml包含一个REPL,您可以使用它以交互方式编写代码,而无需编译。当你第一次学习时,它会非常有用。

还有。对于没有外部依赖关系的简单项目,它与

ocamlbuild prog.native

我还将为Ocaml添加另一个
Makefile
,用于我的项目


Makefile
和示例用法可用。

一个即将推出的项目是,Sylvain Le Gall正在开发一个非常漂亮的构建系统。他在许多OCaml项目中使用它,我也是。

事实上,我更喜欢使用emacs。对于“hello world”示例,我考虑的更多的是“hello world”类型的构建脚本,而不是OCaml的“hello world”。:-)问题#118935的得票最多的答案是“Caml模式下的Emacs,或Tuareg模式”,看看;-)与ocamlbuild相比,我在omake上的运气要好得多——在omake文件中列出依赖包非常容易;我不知道如何用ocamlbuild完成这项工作。最近,我在ocaml邮件列表上看到,ocamlbuild不再受支持。我有很多邪恶巨魔教授。注意事项::-)您可以键入、#使用“”在toplevel运行时包含文件。不要让get在命令行中包含额外的(已编译的)模块(.cma文件),或者在顶层加载“filename.cma”。这是一种非常简单的方法,尽管文档很糟糕。使用顶级编译调试程序也很有帮助,“ocamlbuild prog.top”也很有帮助。你也可以在这里找到它。根据我的经验,这是目前开始编译多模块Ocaml项目最简单的方法。