サフィックスは“.”で始まる必要はない?

例えば,foo.cからprintfをコメントアウトしてfooe.cをつくる場合, 次のようなことを書いてもいいらしい(公式にOKなのかどうかはわからないが,標準makeで期待通りの動作になるようだ).

all: fooe.c

.SUFFIXES: e.c

.ce.c:
        sed 's/\( *printf.*\$\)/\/\* \1 \*\//' $< > $@

※上記sedのone linerで,Makefile中に直接記述する場合は,$の前には\がいることに注意. この$は行末の意味の$で,シングルクォートで囲まれているので,シェル展開の対象にはならないが, makeのマクロ展開の対象にはなってしまう. そのため,makeのマクロ展開を抑止するために\が必要になる. 逆に,Bシェル上で直接実行する場合は$の前の\は書いてはならない(書くと\をマッチ条件に追加してしまうことになる).

しかし,これってほんとに(公式に)OKなんだろうか…. とりあえずシンプルな標準makeで動作するようなんだけども….


はたいたかし
トップ > 開発ツール > make