Windows 上的 OCaml

我们建议新用户安装 opam。Opam 是 OCaml 的包管理器,从 2.2 版本开始完全支持 Windows,并提供最新的 OCaml 环境。

在某些情况下,其他 OCaml 安装程序可能有用

  • 如果您想开发应用程序,并且不熟悉 Unix 或者更关心稳定性和易用性而不是最新编译器,您可以使用 Diskuv OCaml
  • 如果您只想运行应用程序,而不是开发应用程序,您可以使用 DockerWSL2

这些建议基于以下可用性表

  • 第一层级是完全支持的,包括最新的编译器。
  • 第二层级是支持的,但在可能的情况下会进行维护。
  • 第三层级是用户支持的。
╭──────────────────────────────────────────────────────────────────────────╮
│ Tier   │ OCaml Version and Environment   │ Support                       │
│ ------ │ ------------------------------- │ ----------------------------- │
│ Tier 1 │ OCaml 5.x with Opam 2.2+        │ Full support.                 │
│ Tier 2 │ 4.14.x with Diskuv OCaml        │ Supported on select versions. │
│ Tier 3 │ 5.x with WSL2                   │ User supported.               │
│ Tier 3 │ 5.x with Docker                 │ User supported.               │
╰──────────────────────────────────────────────────────────────────────────╯

在 Windows 上安装 Opam

Opam 是通过 Windows 的 winget 分发的。要安装它,请在您的终端中运行以下命令

> winget install Git.Git OCaml.opam

我们建议从 winget 安装 Git;但是,如果您需要,可以省略此步骤并使用您首选的方法安装 Git。Opam 会寻找兼容的 Git,如果找不到,它会提示您选择一些安装选项。

安装完成后,启动一个新 shell 以访问 opam 二进制文件。

$ opam --version
2.2.1

安装 opam 后,运行 opam init 命令设置您的 opam 环境。

您会注意到存储库信息获取阶段需要一段时间才能完成。这是正常的(目前),因此我们建议用户在运行时给自己准备一杯热饮。

opam 需要类 Unix 环境才能正常工作。默认情况下,opam 依赖于 Cygwin,也与 MSYS2 兼容。

初始化时,opam 会扫描您的机器以查找可用的 Unix 环境,并提示您选择您最喜欢的选项。我们建议让它创建自己的内部 Cygwin 安装,该安装将由 opam 管理。这样可以减少其他与这些环境交互的工具可能产生的干扰。可以把它想象成一个沙箱环境。

opam 初始化时的默认行为是安装一个新的 switch 以及一个版本 > 4.05 的 OCaml 编译器。默认情况下,opam 在创建 switch 时选择 mingw 作为 C 编译器,但请注意,您可以选择安装其他编译器,例如 msvc,方法是使用以下命令

opam install system-msvc

opam init 完成后,运行以下命令更新您的环境

在 CMD 中

> for /f "tokens=*" %i in ('opam env --switch=default') do @%i

在 PowerShell 中

> (& opam env --switch=default) -split '\\r?\\n' | ForEach-Object { Invoke-Expression $_ }

每次需要更新 shell 时,opam 都会显示 shell 更新命令。

您可以使用以下命令验证您的安装

> ocaml --version
The OCaml toplevel, version 5.2.0

> ocaml
OCaml version 5.2.0
Enter #help;; for help.

# print_endline "Hello OCamleers!!";;
Hello OCamleers!!
- : unit = ()
#

您现在应该拥有一个可供开发的 OCaml 环境。如果您遇到任何问题或需要进一步帮助,请随时咨询 OCaml 社区

其他安装环境

WSL2

如果您只需要在 Windows 机器上运行 OCaml 程序,最简单的解决方案是使用 Windows 子系统 for Linux 2 (WSL2)。WSL2 是一个允许 Linux 程序直接在 Windows 上运行的功能。WSL2 比 WSL1 使用起来容易得多,也快得多。Microsoft 提供了有关 设置 WSL2 的全面安装步骤。

安装 WSL2 并选择一个 Linux 发行版(我们建议使用 Ubuntu LTS)后,您可以按照 安装 OCaml:Linux 和 macOS 的安装 中的步骤操作。

Docker 镜像

ocaml/opam Docker Hub 存储库现在包含定期更新的 Windows 镜像。这包括使用 msvcmingw 的镜像。如果您对 Docker 比较熟悉,这可能是在您的机器上获取工作 Windows 环境的更简单方法。

Diskuv OCaml

Diskuv OCaml(“DKML”)是一个支持纯 OCaml 软件开发的 OCaml 发行版。该发行版的独特之处在于它的

  • 与 OCaml 标准(如 opam、Dune 和 OCamlFind)完全兼容。
  • 专注于通过支持标准本地编译器(如 Visual Studio 和 Xcode)进行“本地”开发(桌面软件、移动应用程序和嵌入式软件)。
  • 易用性,通过简化的安装程序和简单的生产力命令。高中、大学和大学的学生应该能够使用它
  • 通过可重复性、版本控制和从源代码构建来保证安全性。

要安装 DKML,请简要查看以下内容

  • 您需要留在您的电脑旁,并在任何 Windows 安全弹出窗口中按“是”。DKML 安装程序安装完两个程序(Visual Studio InstallerGit for Windows)后,您就可以离开电脑,剩下的九十分钟(90 分钟)就不用管了。

  • 第一次安装可能会收到一个用红色打印的通知。如果您看到它,请重新启动您的电脑,然后重新启动安装程序,以便 Visual Studio Installer 可以完成。通知看起来像

    - FATAL [118acf2a]. The machine needs rebooting.
    - ...
    - >>  The machine needs rebooting. <<<
    -         ...
    -         FATAL [5f927a8b].
    -         A transient failure occurred.
    -         ...
    -         >>  A transient failure occurred. <<<
    
  • 您可能会被要求接受来自 Open Source Developer, Gerardo Grignoligsudo 可执行文件的证书,该证书由 Certum Code Signing CA SHA2 颁发。

然后下载并运行

使用以下命令在您的 shell(PowerShell 或命令提示符)中检查 OCaml 是否已正确安装。$ 命令下面的行显示了 OCaml 版本和交互式解释器版本所需的输出

$ where.exe ocaml
C:\Users\frank\AppData\Local\Programs\DiskuvOCaml\usr\bin\ocaml.exe

$ ocaml -version
The OCaml toplevel, version 4.14.0

要了解有关 Diskuv OCaml 的更多信息,请参见 官方 Diskuv OCaml 文档

Windows 上的 OCaml 编辑器支持

Visual Studio Code (VSCode)

如果您使用 opam 安装,您需要在运行 VSCode 的路径上添加 opam switch 前缀。

如果您使用 DKML 安装程序,您需要

  1. 转到 文件 > 首选项 > 设置 视图(或按 Ctrl ,)。
  2. 选择 用户 > 扩展 > OCaml Platform
  3. 取消选中 OCaml: 使用 OCaml 环境

如果您使用 WSL2,您将从 VSCode 远程连接到您的 WSL2 实例。Microsoft 有一篇 有用的博客文章,介绍了如何将 WSL2 和 Visual Studio Code 连接起来。

Vim 和 Emacs

对于 Vim 和 Emacs,使用 opam 安装 Merlin 系统

$ opam install merlin

安装过程将打印有关如何将 Merlin 与您的编辑器链接的说明。

如果您使用 Vim,默认的 Cygwin Vim 将无法与 Merlin 一起使用。您需要单独安装 Vim。除了安装 Merlin 时打印的常规说明外,您可能还需要在 Vim 中设置 PATH

let $PATH .= ";".substitute(system('opam config var bin'),'\n$','','''')

帮助改进我们的文档

所有 OCaml 文档都是开源的。看到有错误或不清楚的地方了吗?提交一个拉取请求。

OCaml

创新。社区。安全。