【问题标题】:What's a stupidly simple way to compile an OCaml project?编译 OCaml 项目的简单方法是什么?
【发布时间】:2010-12-01 19:07:21
【问题描述】:

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

【问题讨论】:

    标签: compiler-construction ocaml build-system ocamlbuild


    【解决方案1】:

    ocamlopt 是标准的本地代码编译器。典型的构建语法是:

    ocamlopt -o execname module1.ml module2.ml
    

    您可以改用ocamlc 编译成字节码。

    通常标准库已经包含在内。如果你在一个 *nix 系统上,并且想要包含,比如说,unix 库,你会做类似的事情

    ocamlopt -o execname unix.cmxa module1.ml module2.ml
    

    cmxa 文件是本机代码库,cma 文件是字节码库。

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

    This 是一个不错的“程序员的第一个 Ocaml”页面。
    Here 是我在大学时参加的 Ocaml 课程的讲座页面。不过,不要试图向 Gunter 教授寻求任何提示,如果没记错的话,她是一个邪恶的巨魔。

    【讨论】:

    • 我有不少邪恶的巨魔教授。指出点。 :-)
    【解决方案2】:

    还有ocamlbuild。对于没有外部依赖的简单项目,就这么简单

    ocamlbuild prog.native
    

    【讨论】:

    • 这是一个非常简单的方法,尽管文档很烂。使用顶层编译调试程序也很有帮助,“ocamlbuild prog.top”
    • 它有帮助。你也可以在这里找到它。 realworldocaml.org/v1/en/html/a-guided-tour.html
    • 根据我的经验,这是迄今为止开始编译多模块 Ocaml 项目的最简单方法。
    【解决方案3】:

    看看 Markus Mottle 的 ocaml-make。该项目包括OCamlMakefile。将其复制到您的源目录并创建一个Makefile,例如:

    SOURCES = hello.ml
    RESULT  = hello
    -include OCamlMakefile
    

    【讨论】:

      【解决方案4】:

      您可能正在寻找ide。看看Know of an OCAML IDE?

      http://www.ocaml-tutorial.org/compiling_ocaml_projects 解释编译基础。在该页面的底部有一个名为 Automated build systems 的部分,以及指向主题 Compiling with GNU makeCompiling with Omake 的链接,都包括示例。

      【讨论】:

      • 其实我更喜欢用emacs。对于“hello world”示例,我更多地考虑的是“hello world”类型的构建脚本,而不是 OCaml 的“hello world”。 :-)
      • 对问题 #118935 投票最多的答案是“Caml 模式下的 Emacs 或 Tuareg 模式”,看看 ;-)
      • 我使用 omake 比使用 ocamlbuild 幸运得多——在 omakefile 中列出依赖包非常容易;我不知道如何使用 ocamlbuild 完成这项工作。最近我在 ocaml 邮件列表上看到不再支持 ocamlbuild。
      【解决方案5】:

      您可能知道这一点,但万一您不知道,OCaml 包含一个 REPL,您可以使用该 REPL 进行交互编码,而无需编译。当您第一次学习时,它会非常有用。

      【讨论】:

      • 您可以键入 #use "" 以在顶层运行时包含文件。不要在命令行中包含额外的(编译的)模块(.cma 文件),或者在顶层包含 #load "filename.cma"。
      【解决方案6】:

      一个崭露头角的项目是OASIS,这是一个非常漂亮的构建系统,由 Sylvain Le Gall 开发。他在他的一堆 OCaml 项目中使用它,我也是。

      【讨论】:

        【解决方案7】:

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

        Makefile 和示例用法可用on the Ocaml website

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-23
          • 2017-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多