4

システムにはGNU Makeを使用しています。makefile の最後に、gcc の -MM スイッチを使用して一連の .d ファイルを生成する Makedepends というインクルードがあります。次に、include $(CXXFILES:.cc=.d) 行を使用して、各 .cc ファイルの .d ファイルを含めます。しかし、ファイルを削除したりファイルを移動したりすると、依存関係のステップが中断され、.d ファイルを手動で削除する必要があります (依存関係が失敗するため、make clean でさえ機能しません)。

これらの依存関係 .d ファイルを生成する方法、またはファイルの削除または再配置を適切に処理するこれらの依存関係 .d ファイルを含める方法はありますか?

編集: 例: serial.cc があり、メイクファイルは buffer.h に依存する serial.d ファイルを生成しますが、それを変更して、buffer.h が不要になり、buffer.h を削除します。次にmakeを実行すると、serial.oをbuffer.hに依存させる.dファイルが含まれているため、チョークします。

4

3 に答える 3

7

http://make.mad-scientist.net/papers/advanced-auto-dependency-generationには、この正確な問題の説明と、それを回避する方法がいくつかあります。1 つ目は少し見当違いですが、「高度な」は本質的に的を射ています。

于 2008-10-27T03:50:49.250 に答える
0

2 つの可能性:

まず、依存関係のステップを実行するルールを Makefile に追加できますか。

.SUFFIXES: .d

%.d::
   makedepend_command_here

そうでない場合は、GNU MakeLast Resortのページのセクションから:info

たとえば、メイクファイルをテストする場合、ソース ファイルに実際のデータが含まれているかどうかは気にせず、それらが存在することだけを気にする場合があります。次に、次のようにします。

 %::
         touch $@

(前提条件として) 必要なすべてのソース ファイルが自動的に作成されるようにします。

これで空の.dファイルが作成されますか?

于 2008-10-27T03:43:33.523 に答える