如何在Windows上安装带有OPam的OCaml?
答案 0 :(得分:5)
我已经能够使用Opam软件包管理器在Windows 10中设置OCaml 4.03.0,方法是遵循本网站的教程:http://fdopen.github.io/opam-repository-mingw/。以下是我所做的详细步骤:
安装OCaml,Opam和Cygwin:
从以下链接下载安装包:http://fdopen.github.io/opam-repository-mingw/installation/。 有32位和64位版本,但我建议安装OCaml 64位。
运行图形安装文件时,会自动为您安装OCaml 4.02.3,Cygwin,Opam。
安装完成后,将在Windows桌面上创建OCaml和Cygwin的快捷方式。
现在,从Windows桌面的快捷方式打开Cygwin终端并执行以下操作:
为Opam安装一些必需的库:
filterList = products.map(function(product, key) {
if (product.charAt(0) !== letter) {
letter = product.charAt(0);
var count = products.filter(function(value) { return value.charAt(0) === letter}).length;
return (
<FilterItem type="header" header={letter} field={filter} count={count} key={key}/>
<FilterItem type="item" field={filter} name={product} key={key}/>
)
} else {
return <FilterItem type="item" field={filter} name={product} key={key}/>
}
opam install depext
使用Opam将您的OCaml升级到4.03.0:
opam install depext-cygwinports
opam switch 4.03.0+mingw64
你在Windows上有OCaml 4.03.0!
答案 1 :(得分:3)
我能够使用Windows子系统Linux(WSL)在Windows 10中运行OCaml和Opam而没有任何问题。
这是一个非常详细的描述和说明 OCaml on Windows: The easy way
注意:截至本文的文章OCaml on Windows: The easy way中有2个拼写错误,当您遇到这两条说明时请使用以下
nano .ocamlinit
(*添加额外的i nano .ocamlint
*)open Core.Std;;
(*从#open Core.Std;;
删除#)希望这有助于某人!
**删除了初始链接,所以这里是内容
Windows上的OCaml:简单方法
过去有很多方法可以在Windows上运行OCaml,这里有很多列表。但是,它们都有缺点,无论是否依赖其他人更新安装程序二进制文件,或者只是为了运行OCaml而必须处理安装和管理Cygwin。
幸运的是,随着Windows子系统Linux(WSL)的发布,可以在Windows中轻松使用标准的Ubuntu OCaml / OPAM,并将其与Windows GUI代码编辑器集成。本指南假设您已经设置了WSL - 如果不按照本指南进行设置后再回来。
鉴于Jane Street等核心基础模块如何与OCaml进行任何实际工作,我们将安装OPAM包管理器和Core以及编译器。最终结果正是您开始使用优秀的Real World OCaml指南所需的设置。
首先,我们需要下载并安装ocaml和opam,我们需要将个人包存档(ppa)添加到apt-get,因为官方的Ubuntu存储库偶尔会出现问题。下面的代码将此私人仓库添加到apt-get。
sudo add-apt-repository ppa:avsm/ppa
sudo apt-get update
然后只需使用apt-get安装ocaml,opam和m4(设置也需要宏处理器才能正常工作)
sudo apt-get install ocaml opam m4
下一步是设置opam。从opam init开始,它将要求您授予其更新.ocamlinit和.profile文件的权限。您可以简单地回答“是”以进行更改。
这使您可以使用ocaml命令运行基本的REPL循环。但是,需要一些额外的零碎才能进入Real World OCaml指南的开头。我们使用以下命令通过opam安装这些附加功能:
opam install core utop
通常我们现在添加环境变量以使用以下命令运行环境:
eval 'opam config env'
这应该添加您需要的变量,如此处和此处所述。但是,当我在WSL上尝试它时它不起作用,我认为作为windows和linux处理新行的方式之间差异的副作用。您可以通过运行命令然后使用printenv来查看所有环境变量 - 没有设置任何变量。
相反,如果我们使用此命令:
eval "$(opam config env)"
然后所有命令都作为一个块传递给'eval',所以整个事情干净地评估,如果你运行printenv,你应该看到所有必需的环境变量。
唯一剩下的就是通过编辑.ocamlinit文件来设置OCaml和自定义utop,该文件将位于您的主目录中。
备注:如果您是bash的新用户,可能会感到困惑的是,如果您在主目录中运行ls,则不会出现这种情况。这是因为。在默认情况下隐藏它的文件名前面。如果您运行ls -a
,您将能够看到它。
使用您喜欢的文本编辑器打开此文件,例如nano .ocamlinit
,然后添加这些行。这是一些OCaml代码,它将在初始化时执行,即每次启动OCaml环境时都会执行。
#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
open Core.Std;;
现在一切都在做它应该做的事情 - 如果你运行ocaml,你将获得加载了Core模块的utop,并准备开始使用优秀的Real World OCaml指南。
然而,最后一个皱纹。以这种方式设置环境变量是暂时的 - 如果你退出WSL然后用bash重新启动它然后重新运行printenv你将看到你丢失了环境变量,ocaml命令现在将失败 - 无法找到topfind的路径,因为环境变量已经消失。
要解决此问题,我们可以将命令eval "$(opam config env)"
添加到您的主文件夹中.bashrc文件的底部,该文件夹在每次登录时由bash运行。这可确保它自动运行,以便您只需登录并运行ocaml即可设置功能齐全的ocaml环境。如果通过opam switch命令切换编译器,则需要重新运行命令或使用exit重新启动shell,然后使用bash将更改推送到环境变量并更新OCaml使用的版本。
您现在已准备好启动Real World OCaml - 尽情享受吧!这为您提供了bash下的REPL循环,这对学习很有帮助。但是,对于更严肃的程序,您需要编写.ml文件 - 下一部分(即将推出)包括使用Windows中的GUI代码编辑器(如Visual Studio Code)使用bash OCaml环境进行构建。
答案 2 :(得分:0)
Windows 10 CygWin64 标准C工具链 OCaml 4.02.3 + BuckleScript-1 ** ** WebAssembly规范/解释器 从源代码编译 OPam
安装CygWin 64位setup-x86_64.exe
-选择您的路径(以下简称为 cwd ),所有其他设置均为默认设置或下一个
-将安装程序移至 cwd
从 windows cmd提示符
安装标准C工具链所需的软件包。cwd>setup-x86_64.exe -q -P wget -P gcc-g++ -P make -P diffutils -P libmpfr-devel -P libgmp-devel -P libmpc-devel
编辑cwd/home\username\.bash_profile
,添加
export SHELLOPTS
set -o igncr
通过图标 Cygwin64终端
启动选择安装BuckleScript git的路径(以下缩写为 bwd )
cd /cygdrive/bwd
git config --global core.eol lf
git config --global core.autocrlf false
git clone --recursive https://github.com/bloomberg/bucklescript
(克隆到/cygdrive/bwd/bucklescript
)
编辑/cygdrive/bwd/bucklescript/.gittattribute
,添加
* text=auto
选择OCaml编译器的构建路径(以下缩写为 owd )
配置并制作
cd /cygdrive/owd/bucklescript/ocaml
./configure -prefix /owd
make world.opt
make install
安装OPam
创建开关(未解决的问题,等待答案)
编译bsc.exe(打开问题,等待答案)
安装WebAssembly规范解释器(WASM WAST切换)
issue WebAssembly/spec/interpreter/1052
...待完成!