Dune 是 OCaml 的构建系统。它提供一致的体验并处理 OCaml 编译的低级细节。您只需提供项目的描述,Dune 将完成剩下的工作。
Dune 实施的方案受到 Jane Street 内部使用的方案的启发,并适应了开源世界。它已经成熟了很长时间,每天都有数百名开发人员使用,这意味着它经过了高度的测试和高效。
沙丘附带一本手册。如果您想在不阅读太多内容的情况下开始使用,请查看快速入门指南或观看此介绍视频。
示例目录包含使用 Dune 的项目示例。
Dune 从dune
文件中读取项目元数据,这些文件是具有简单 S 表达式语法的静态文件。它使用这些信息来设置构建规则,为 Merlin 等开发工具生成配置文件,处理安装等。
Dune 本身速度很快,开销很小,并且支持所有平台上的并行构建。它没有系统依赖性。 OCaml 是您使用 Dune 构建 Dune 和包所需的一切。
特别是,可以使用二进制安装程序在 Windows 上安装 OCaml,然后仅使用 Windows 控制台来构建 Dune 和使用 Dune 的包。
Dune 是可组合的,这意味着多个 Dune 项目可以安排在一起,从而形成 Dune 知道如何执行的单个构建。这允许项目的单一存储库。
Dune 使多个包的同时开发成为一项微不足道的任务。
Dune 知道如何处理包含多个包的存储库。通过 opam 构建时,它能够正确使用以前安装的库,即使它们已经存在于源代码树中。
魔法调用是:
$ dune build --only-packages < package-name > @install
Dune 可以同时针对多个配置构建给定的源代码存储库。这有助于跨多个 OCaml 版本维护包,因为您可以轻松地一次测试它们。
特别是,这使得处理交叉编译变得容易。此功能需要 opam。
Dune 需要 OCaml 版本 4.08.0 来构建自身,并且可以使用 OCaml 4.02.3 或更高版本构建 OCaml 项目。
我们建议通过 opam 包管理器安装 Dune:
$ opam install dune
如果您是 opam 的新手,请确保运行eval $(opam config env)
以使dune
在您的PATH
中可用。 dune
二进制文件是独立且可重定位的,因此您可以安全地将其复制到其他位置以使其永久可用。
您还可以使用以下命令手动构建它:
$ make release
$ make install
如果您没有make
,您可以执行以下操作:
$ ocaml boot/bootstrap.ml
$ ./dune.exe build -p dune --profile dune-bootstrap
$ ./dune.exe install dune
第一个命令构建dune.exe
二进制文件。第二个构建由 Dune 安装的附加文件,例如手册页,最后一个只是将所有这些文件安装到系统上。
请注意:除非您运行可选的./configure
脚本,否则您只需将dune.exe
复制到任何地方即可运行。 dune
是完全可重定位的,并在运行时发现其环境,而不是在编译时对其进行硬编码。
如果您对 Dune 有任何疑问或问题,可以在我们的 GitHub 讨论页面中提问或在 GitHub 上提交票证。