ここでは OCaml プログラムを OMake でコンパイルする方法を要約した。 OMake は、findlib(ocamlfind)で管理される標準ライブラリと同じく、 camlp4 構文ライブラリを使っているOCamlファイルや、 ocamllex, ocamlyacc を用いて, ネィティブコードの実行ファイル、 ocamlopt がなければバイトコード実行ファイルを生成することができる。
omake --install
を実行する:これでカレントディレクトリに OMakefile
の雛型と OMakeroot
が作られる。OMakeroot
はそのままにしておく。雛型の OMakefile
は ocamlfind
を使うオプションが書いてないので、基本的には書き直して、追加オプションをファイル中に明示する必要がある。parser.mly
, lexer.mll
, main.ml
だとする。自動生成された OMakefile
からコメントを削除したりコメントアウトしたりする。こんな感じだ:# プログラム名 (拡張子無し) PROGRAM = myprog # ソースファイルを拡張し抜きで1行に一つずつ書く。 # 後ろにスペースを付けないこと。 FILES[] = parser lexer main # 別の書き方もある: # FILES = parser lexer \ # main # ocamlfind を使う場合 USE_OCAMLFIND = true # ocamlfind で探して使うパッケージ OCAMLPACKS[] = unix micmatch_pcre labltk # camlp4 プリプロセッサを使うことを omake に伝える OCAMLFINDFLAGS = -syntax camlp4o # ocamldep を走らせる前にファイル生成しておく必要があることを OMake に伝える # (OMake は ocamllex と ocamlyacc を使うことは知っている) OCamlGeneratedFiles(lexer.ml parser.mli parser.ml) # 実行ファイルの生成 OCamlProgram($(PROGRAM), $(FILES)) # デフォルト動作: バイトコードかネイティブコードのどちらか又は両方の生成 .DEFAULT: $(if $(BYTE_ENABLED), $(PROGRAM).run) \ $(if $(NATIVE_ENABLED), $(PROGRAM).opt) # 掃除 .PHONY: clean clean: rm -f \ $(filter-proper-targets $(glob $(addsuffix .*, $(FILES)))) \ $(PROGRAM).run $(PROGRAM).opt
ソースファイル名や実行ファイル名、ライブラリやオプションなど 必要に応じて OMakefile
を書き換えること。 では omake
を走らせよう。 コンパイルされて実行ファイル、 myprog.run
(バイトコード)かmyprog.opt
(ネイティブコード) 、もしくは命名した通りのものができるだろう。 omake clean
コマンドで、コンパイルの際に生成したファイルが削除される。
詳しい情報は OMakeの公式サイト(英語)にある。