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に追加しておくことをお忘れなく。