toge's diary

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

gcc -MMの困ったところ

ご存知の通り gcc にはMakefile用の依存情報を吐き出してくれる M とか MMとかのオプションがあるのですが、個人的な使い方にちと合わないのよね。

% gcc -M src/hoge.c
hoge.o: src/hoge.c /usr/include/stdio.h /usr/include/features.h \
  /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \
  /usr/include/bits/wordsize.h /usr/include/gnu/stubs-32.h \
  /usr/lib/gcc/i386-redhat-linux/4.0.2/include/stddef.h \
  /usr/include/bits/types.h /usr/include/bits/typesizes.h \
  /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
  /usr/include/bits/wchar.h /usr/include/gconv.h \
  /usr/lib/gcc/i386-redhat-linux/4.0.2/include/stdarg.h \
  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
  /usr/include/math.h /usr/include/bits/huge_val.h \
  /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
  /usr/include/string.h 

でも私としては、次みたいにhoge.oはsrc/hoge.oになっていて欲しいわけです。

% gcc -M src/hoge.c
src/hoge.o: src/hoge.c /usr/include/stdio.h /usr/include/features.h 
... 

gccのオプションでうまくできるのかもしれんが、どうも無さそうです。解決策としてはMTオプションでhoge.oの所を直接指定するっていう技もあります。