include/c++ フォルダーに *.H c++ ヘッダーがありますが、これらのファイルを変更しても make は再度 make を実行しません。これらのファイルが変更されたときに Makefile を変更してリメイクするにはどうすればよいですか?
質問する
2963 次
2 に答える
7
GNU make と GCC を使用していて、(すべてのソースから直接プログラムをビルドするのではなく) ソースごとに個別のオブジェクトをビルドしている場合は、必要な依存関係を自動的に生成できます。コンパイラのコマンドライン引数に次を追加します。
-MD -MP
-MD
.d
依存するすべてのヘッダーを指定するmakeルールを含む、各オブジェクトと一緒にファイルを生成します。これらの変更が予想されない場合は、代わりに を使用して、システム ヘッダー (ではなく-MMD
に含まれるもの) を除外できます。ヘッダーのいずれかが削除された場合にターゲットが再構築されるように、ダミーのルールを生成します。<>
""
-MP
次に.d
、makefile からすべてのファイルをインクルードします。これらのファイル-include
が欠落していてもエラーにはなりません。これを行うには、オブジェクト ファイルのリストを次のように変換します。
-include $(all_objs:.o=.d)
于 2013-11-01T12:32:06.813 に答える
2
ターゲットがヘッダーに依存していることを確認してください。
your_app: $(SOURCES) $(HEADERS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(SOURCES) $(LIBS) -o$@
于 2013-11-01T12:24:18.757 に答える