toge's diary

コンピュータ関連の趣味をつらつらと。

gcc -MMの困ったところ 解決編

id:toge:20060320
前回の続きです。無茶苦茶尻切れトンボだったのでしたね。

結局MTオプションを使うことにしました。定義は以下の通り。

%.d : %.cpp
	$(CXX) $(CFLAG) -MM -MT $(<:.cpp=.o) $< >> DEPENDS

%.d : %.c
	$(CC) $(CFLAG) -MM -MT $(<:.c=.o) $< >> DEPENDS 

%.dはdummyのターゲットです。このルールで%.dを生成することはありません。
で、MTオプションで依存関係の出力先を%.oに変えてしまいます。
%.oにはfullpathが入っているので、以前のように困ることがありません。
つまり次のようになるわけですね。

% gcc -MM -MT src/hoge.o src/hoge.cpp
src/hoge.o: src/hoge.c /usr/include/stdio.h /usr/include/features.h 
... 

めでたしめでたし。
ちなみに%.dなファイルを.PHONYに追加しておくことをお忘れなく。