makedepend〜メイクファイルの依存関係自動生成プログラム〜


目次に戻る


今日、すごいコマンド(?)を見つけてしまいました。その名前はmakedepend。メイクファイルの依存関係を自動生成してくれるプログラムです。makeを普段使っている人向けです。それ以外の人はわけわかんないと思います。
 
普段私はメイクファイルを次のように書きます。
 
# Makefile
# あ〜ちゃらのメイクファイル
 

EXENAME=herohero
INCLUDEPATH=-I. -I色々
CFLAGS=$(INCLUDEPATH) -g 他色々
ALL_C_FILES=main.c hoge.c nya.c・・・

all: $(EXENAME)

clean:
    \rm $(ALL_C_FILES:.c.o)
    \rm $(EXENAME)

.c.o:
    $(CC) $(CFLAGS) -c $< -o $@
 
$(EXENAME): $(ALL_C_FILES:.c.o)
    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ALL_C_FILES:.c.o)

#依存関係の記述
main.o: mainc. main.h
hoge.o: hoge.c main.h hoge.h
        :
        :

メイクファイルは一度作ってしまえば make と打ち込むだけで変更部分のみをコンパイルしてくれる便利なツールなのですが、最後の「依存関係」が正確に入力されている事が大前提です。
で、この依存関係。記述するのがとっても面倒くさい。ヘッダファイルを #include したり消したりするたびに変更していかなければいけない。
 
makedepend はソースファイルを解析してこの依存関係を自動生成してくれる優れものです。
 
使用する場合はたいてい Makefile の中に depend: 処理を埋め込みます。
 
# Makefile
# あ〜ちゃらのメイクファイル
 

EXENAME=herohero
INCLUDEPATH=-I. -I色々
CFLAGS=$(INCLUDEPATH) -g 他色々
ALL_C_FILES=main.c hoge.c nya.c・・・

all: $(EXENAME)

clean:
    \rm $(ALL_C_FILES:.c.o)
    \rm $(EXENAME)

#以下を追加
depend:
    makedepend -- $(CFLAGS) -- $(ALL_C_FILES)

.c.o:
    $(CC) $(CFLAGS) -c $< -o $@
 
$(EXENAME): $(ALL_C_FILES:.c.o)
    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ALL_C_FILES:.c.o)

#依存関係の記述(あると邪魔なのでコメントアウト
#main.o: mainc. main.h
#hoge.o: hoge.c main.h hoge.h
#        :
#        :

そしたら make depend と打ち込んでみましょう。Makefileが書き換えられて、ファイルの末尾に依存関係が追加されているはずです。あとは make と打ち込んでコンパイルするだけ。
 
なんて楽ちんなんでしょう!

目次に戻る