安装特定 OCaml 编译器版本
TLDR
使用
opam switch set
手动选择要使用的切换,并使用dune-workspace
自动在不同的环境中运行命令。
编译环境使用 opam 切换进行管理。典型的工作流程是在项目中使用本地 opam 切换,但有时您可能需要选择不同的编译环境(即不同的编译器版本)。例如,在 OCaml 的旧版本/新版本上运行单元测试。
为此,您需要创建全局 opam 切换。要使用给定版本的编译器创建 opam 切换,您可以使用
opam switch create 4.14.0 ocaml-base-compiler.4.14.0
这将创建一个名为 4.14.0
的新切换,其编译器版本为 4.14.0
。
可以使用以下命令检索可用编译器版本的列表:
opam switch list-available
这将列出所有已配置的 Opam 存储库的可用编译器版本。
创建切换后(或您已经拥有想要使用的切换),您可以运行
opam switch set <switch_name>
eval $(opam env)
以使用此切换配置当前环境。
如果是新切换,则需要使用 opam install . --deps-only
重新安装您的依赖项(请参阅“安装依赖项”)。
或者,您可能希望自动在给定的一组编译环境中运行命令。为此,您可以在项目的根目录中创建一个 dune-workspace
文件,并在其中列出要使用的 opam 切换
(lang dune 2.0)
(context (opam (switch 4.11.0)))
(context (opam (switch 4.12.0)))
(context (opam (switch 4.13.0)))
您运行的所有 Dune 命令都将在列出的所有切换上运行。例如,使用上面的定义
dune runtest --workspace dune-workspace
Dune 将为 OCaml 4.11.0
、4.12.0
和 4.13.0
运行测试。