OCaml MinGW でがんばる時メモ

Wodi に依存する場合は死ぬまで依存。上手く行かなくなっても泣かない。

Wodi に依存しない場合

  • OCamlWindows ビルドは三種類あり、それぞれ特性が違う。これは Native MinGW での話である。他人の Windows での OCaml の話を聞くときにはまずどの種類か確認してからにしなさい
  • http://d.hatena.ne.jp/camlspotter/20140502/1399024687 トラぶったらこれくらいはできる胆力が無ければ引き返してください
  • Flexdll は OCaml に依存しているんだ!だからまず Flexdll はバイナリで落としてこよう。自分でビルドは一段落してから。
  • 困ったら wodi のレポからパッチを盗む https://github.com/fdopen/godi-repo.git 。そもそも元のソフトのライセンスを考えればパクリは問題ない。ただし、Wodi というか Godi の内部構造とか知っても全く得しないのでパッチもらうだけにしよう
  • OPAM は動かないが、パッケージ情報は上手に利用できる https://opam.ocaml.org/packages/ 。こっからソースと依存情報はすぐ取れるのでかなり楽
  • ほとんどの場合は Oasis の setup.ml を使えばインストールは問題ないはず、だが、 PREFIX だけは cygpath -m を通したものを使ったほうがよいようだ: ocaml setup.ml -configure --prefix `cygpath -m $PREFIX` 。ビルド時の Cygwin側からも実行時の Windows 側からも解釈できる形だから。
  • ML のみのパッケージならこの時点で9割はビルドはできる。パス周りの動作はもちろん知らない。
  • EXE=.exe して Makefile などを手直しする必要がままある
  • oasis で setup.ml を作り直すとそれはそれでハマルような気がするので、できるだけ付属の setup.ml を改竄する感じで
  • ocaml setup.ml -configure や -build などで shell script を呼び出している場合、うまくいかないので Some ("foobar.sh", args) みたいなのを Some ("c:/cygwin/bin/sh.exe", "foobar.sh" :: args) に変更しなければいけない場合がままある (ビルドは Cygwin 側でも ocaml setup.ml から先は Windows 側になるため)
  • \ が潰れている場合は深く考えず、さっさと / に書き換える