1

makefileには、次の行があります。

helper.cpp: dtds.h

これにより、dtds.hが変更されるたびにhelper.cppが再構築されます。ただし、次のように、他の2つのヘッダーファイルのいずれかが変更された場合に、プロジェクト内のすべてのファイルを再構築する必要があります。

*.cpp: h1.h h2.h

明らかにそれはうまくいきませんが、nmakeに自分のやりたいことをさせる正しい方法がわかりません。誰かが助けることができますか?個々のファイルがh1.hとh2.hに依存することを手動で指定する必要はありません。

ありがとう。(私はVisual Studio 2005に含まれているnmakeを使用しています。)

4

2 に答える 2

2

試す

%.cpp : h1.h h2.h

これはGNUmakeで機能します-nmakeが互換性があるかどうかはわかりません...

編集:そしてところで:それはすべきではありません

helper.o : dtds.h

%.o :  h1.h h2.h

結局のところ、ファイルを再作成するのではなく.cpp(どのようにソースファイルを作成しますか?)、再コンパイルします...

Edit2:NMAKEリファレンスを確認してください。これによると、

.cpp.obj: h1.h h2.h

うまくいくかもしれない...

于 2009-01-07T00:30:04.543 に答える
2

助けてくれてありがとう、クリストフ。私は試した:

.cpp.obj: h1.h h2.h

そして、役立つエラーメッセージが表示されました:

makefile(58) : fatal error U1086: inference rule cannot have dependents

コンパイルしたいファイルのリストを作成し、リスト全体に依存関係を追加することで、最終的に解決しました。

files = file1.obj file2.obj file3.obj
$(files): h1.h h2.h
于 2009-01-07T01:30:36.747 に答える