Windows 上的 OCaml

我們建議新用戶安裝 opam。OCaml 套件管理器 opam 自 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 通過 winget 發佈於 Windows。要安裝它,請在您的終端機中執行以下命令

> 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 $_ }

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 Subsystem 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. <<<
    
  • 您可能會被要求接受來自 Certum Code Signing CA SHA2 頒發的 Open Source Developer, Gerardo Grignoligsudo 可執行檔憑證。

然後下載並執行

使用以下 shell (PowerShell 或命令提示字元) 中的命令檢查 OCaml 是否已正確安裝。$ 命令下方的行顯示 OCaml 版本和 toplevel 版本的預期輸出

$ 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 Env

如果您使用 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 文件都是開放原始碼。發現錯誤或不清楚的地方?提交 pull request。

OCaml

創新。社群。安全。