ocamlbuild sucks

ocamlbuild が嫌いだ。CamlP4は評価する点もあるが、ocamlbuildは少なくとも今のところ完全な間違いだ。ocamlbuild のドキュメントには:

automating the compilation of most OCaml projects with minimal user input

と書かれているが、ocaml のソースにある、_tags, myocamlbuild.ml を見ればこれが大嘘だということが判るだろう。

  • 簡単なプログラム例では ocamlbuild は便利だが、複雑にな物に対しては恐ろしい設定ファイルが必要 i.e. ocaml ソース
  • ドキュメントがよく整備されていないにもかかわらず恐ろしい勢いでコンパイラビルドの中核に導入、スクワット状態。
  • なので、コンパイラ改造する人は否応なしにこの変なソフトウェアの事を勉強させられることになる (でもドキュメントは整備されていない)
  • そしてこの ocaml コンパイラに付属する ocamlbuild 設定ファイルが改造者にとって初めての ocamlbuild 体験となる。これは辛すぎる。もちろんすぐには理解できないし、理解するためには不条理に長く時間を取られる。
  • 移行段階だと思いたいが、Makefile と ocamlbuild の二つのビルドシステムが並立している。ocamlbuild 一本になってもらうのも大問題だが。
  • 結論: 現在、Makefile + gmake 以外にこの妙で未成熟なツールが存在しなければいけない理由が十分に説明されていない。

こういう OCaml 系 make 改良ツールは omake が今のところ一番よい。これで ocaml コンパイラ自体がビルド出来てもどう配布するかという問題は残るが。(omake 自体 OCaml で書かれているし、どれくらい platform independent なのか私は知らない)

メモ:

  • ocaml ソースツリーに新しい .ml, .mli を追加した場合、ocamlbuildがお節介にも hygine violation を発生させる。これがウザい。
  • これを修正するには myocamlbuild.ml と _tags を変更する必要がある。

追記:
higiene violation の問題は: http://d.hatena.ne.jp/camlspotter/20081106 を参考にしてください。