如何在ocaml中将二进制代码与源分开?

时间:2018-05-09 16:55:52

标签: ocaml

我的源码旁边有一个构建目录

ocamlc -c file1.ml
ocamlc -c file2.ml
…
ocamlc -o main.ml ….cmo

我的源代码是编译生成的文件。

我想要一个ocamlc的选项,使我能够在构建目录中拥有此文件。

我知道我可以做ocamlc -o build/main.ml .....cmo但我也想在构建目录中使用.cmo

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您的主要问题的答案很简单: 为了将OCaml应用程序的主二进制文件放在build文件夹中,您只需要运行:

ocamlc -o build/main.exe main.ml ….cmo

确实如文档(man ocamlc)中所示:

  

-o exec-file
    指定链接器生成的输出文件的名称。该     默认输出名称是a.out,符合Unix传统。 [...]

但是,按照您在问题中建议的方式手动完成所有构建步骤可能效果不是很好(特别是,所有 .cmo 文件都会保留在同一个源中文件夹)。

为了避免这种情况并促进OCaml项目的构建,我建议使用OCaml的构建管理工具,例如教程末尾提到的四个工具之一Compiling OCaml Projects

  • ocamlbuild
  • GNU make
  • OMake
  • 搜寻

ocamlbuild可能是四种中最容易使用的工具。)

但您也可以考虑使用Dune (formerly known as JBuilder),这是opam中大多数软件包使用的构建系统。