🐫
opamを用いたOCamlプロジェクトのセットアップ方法
OSはOSXを想定している。
事前準備
事前準備としてopamを導入する。
-
opamをインストールする
brew install opam
-
opamを初期化する。任意のディレクトリで次のコマンドをたたく
opam init
このコマンドをたたくと、
~/.opam
が作成され、そこに最新のOCamlがインストールされる。
またこのコマンドをたたくと質問されるのでそれに答える。Do you want opam to modify ~/.zshrc? [N/y/f] (default is 'no', use 'f' to choose a different file)
y
と答えるA hook can be added to opam's init scripts to ensure that the shell remains in sync with the opam environment when they are loaded. Set that up? [y/N]
y
と答える
この質問は、opamの設定(たとえば使うOCamlのバージョンなど)を更新するスクリプトをなにかにhookさせて走らせるかどうか。Zshの場合、$HOME/.opam/opam-init/env_hook.zsh
が作成され、プロンプト表示にhookして更新スクリプトが走るようになる。作業ディレクトリごとにopamの設定は異なるのでyと答えておくのがよい。残念ながら、もともと.zshrcにopamによるコード追加が含まれている方もyと答える。.opam/opam-init/env_hook.zsh
はyと答えないと作成されない。 -
opamで用いる環境変数の更新をする
eval $(opam env)
-
OCamlがインストールされていることを確認する
ocaml --version which ocaml # => `~/.opam/default/bin/ocaml`になっているはず
プロジェクトでOCamlをセットアップ
- インストールしたいOCamlのバージョンを探す
opam switch list-available
#Name
列がocaml-base-compiler
となっている行を確認すればOK。 - バージョンを指定してOCamlをインストールする
# cd /path/to/your_project して opam switch create . ocaml-base-compiler.4.11.1
/path/to/your_project
配下に、_opam
ディレクトリができる。
このディレクトリにocamlコマンドや必要なパッケージがインストールされていく。 - 2でOCamlがインストールできたか確認する
eval $(opam env) ocaml --version which ocaml # => `/path/to/your_project/_opam/bin/ocaml`になっているはず
- 必要なパッケージをインストールする準備としてopamファイルを作成するこのopamファイルが、npmでいうpackage.jsonにあたるもの。ただnpmと違って、opamパッケージをインストール、アンインストールする[1]たびに自動で更新されるわけではないので手動で更新する必要がある。次の例[2]に従って必要なパッケージを
# cd /path/to/your_project して touch ${your_project_name}.opam
${your_project_name}.opam
に記載する。opam-version: "2.0" # => opam自体のバージョンが2以上でも"2.0"と書いておけばOK depends: [ # => 必要なパッケージを記載 "merlin" "dune" {= "2.7.1"} # => バージョン指定したい場合の書き方 "ocamlformat" "ocaml-lsp-server" ]
- opamファイルに記載された情報をもとに必要なパッケージをインストールする
# cd /path/to/your_project して opam install . --deps-only
Discussion