omake with camlp4
pa_ooを使ったソースコードをomakeでビルドしたかったので、いろいろ試してみた。もっと賢い方法がある気がするけど、とりあえず動くよ。
ディレクトリ構造
+-camlp4-omake/ | +-camlp4/ | | | +-OMakefile | | | +-pa_oo.ml | +-main.ml | +-OMakefile | +-OMakeroot
main.ml
サンプルコードはこんな感じ。
let o = {| x = "hello"; y = "world" |} let _ = print_endline o#x
camlp4/OMakefile
camlp4/以下は普通にビルドする。
BYTE_ENABLED = true # camlp4 OCAMLINCLUDES += -I +camlp4 OCAMLPPFLAGS += -pp camlp4orf OCAMLDEPFLAGS += $(OCAMLPPFLAGS) OCamlProgram(pa_oo,pa_oo)
OMakefile
依存関係を解決する前に、pa_oo.cmoをビルドするようにしてやる。
# サブディレクトリ設定 .SUBDIRS: camlp4 # 追加ルール。依存関係を解決する前にpa_ooをビルドする .SCANNER: scan-ocaml-%.ml: %.ml camlp4/pa_oo.cmo section $(OCamlScanner $<) # フラグ設定 BYTE_ENABLED = true OCAMLPPFLAGS += -pp 'camlp4o camlp4/pa_oo.cmo' OCAMLDEPFLAGS += $(OCAMLPPFLAGS) # あとは通常通り FILES[] = main .DEFAULT: $(OCamlProgram main, main)