例えば,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で動作するようなんだけども….