Cotton Bolls: オブジェクト指向風Make
« YAMLとConverter | トップページ | AOP版Generation Gapパターン »
2003.12.25
オブジェクト指向風Make
GNU Make ver3.80から導入されたevalファンクションを使えばMakefileをオブジェクト指向風に書くことができる.オブジェクトのIDを自分でつけないといけないという欠点はあるが,モジュール化されてMakefileの見通しがよくなる.次のPointクラスは,x, yというインスタンス変数,inspectというインスタンス・ターゲット,shiftというインスタンス・ファンクションが定義されている.
define Point.new $(eval \ $1.x := $2 $1.y := $3 $1.inspect: echo $$($1.x) echo $$($1.y) $1.shift = $$(call Point.shift,$1,$$1,$$2) ) endef define Point.shift $(eval \ $1.x := $$(shell expr $$($1.x) + $2) $1.y := $$(shell expr $$($1.y) + $3) ) endef
利用例はこんな感じ:
all: pt.inspect $(call Point.new,pt,10,20) $(call pt.shift,3,2)
一度これを作ってMakeのみで動作するJUnitもどきのテスティングフレームワークを作ってみたが,evalファンクションのバグで頓挫してしまった.evalファンクションの中身が複雑になると
*** virtual memory exhausted. Stop.
というエラーが出てしまうためだ.将来バグフィックスされたら使えそうかな.
10:41 AM in Make | 固定リンク
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/48615
この記事へのトラックバック一覧です: オブジェクト指向風Make: