GNU Make 3.81で依存関係のファイルをincludeしたいのですが、

毎回依存関係のファイルを作ってしまいます。
どこを直したらよいでしょうか?

======================================
All:
    @echo test


Makefile.depend: $(subst .c,.d,$(wildcard *.c))

depend: clean $(subst .c,.d,$(wildcard *.c))

%.d:%.c
    touch Makefile.depend

clean:
    del Makefile.depend

include Makefile.depend
==========================================

Makefile.depend:をターゲットのみにしてしまえば毎回Makefile.dependは作らなくなりますが、
Makefile.dependがない場合に自動で作らなくなる,
Makefile.dependがない場合にエラーでとまらなくなる等の問題が生じます。

回答の条件
  • 1人2回まで
  • 登録:2010/01/13 23:37:31
  • 終了:2010/01/18 23:01:10

回答(1件)

id:makeworld No.1

makeworld回答回数75ベストアンサー獲得回数232010/01/15 01:47:47

ポイント100pt

「include」を「-include」に変更して、「.d」ファイルを実際に作成するか又は「Makefile.depend」のルールを削除すれば良いと思います。

  • 「.d」を作成するが、自動で「Makefile.depend」も更新
All:
        @echo test

Makefile.depend: $(subst .c,.d,$(wildcard *.c))
        cat $(subst .c,.d,$(wildcard *.c)) > $@

%.d: %.c
        touch $@

clean:
        rm -f Makefile.depend $(subst .c,.d,$(wildcard *.c))

-include Makefile.depend
  • 「.d」は作成しないが、明示的に「make depend」が必要
All:
        @echo test

depend: clean $(subst .c,.d,$(wildcard *.c))

%.d: %.c
        touch Makefile.depend

clean:
        rm -f Makefile.depend

-include Makefile.depend
id:foobar_777

実際には%.d:%.cのところはtouchではなく、依存関係を調べてMakefile.dependを作る処理を行います。

2番目だと依存関係を読みこまないことがあるので

1番目の.dを作る方法でやってみます。

2010/01/15 07:45:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません