Makeは正常に動作していますが、デフォルトでは、を実行しても、変更されたファイルのみをコンパイルしますmake all
。それはのように言いNothing to Do
ます。
すべてのファイルをコンパイルする必要があるシナリオの1つは、複数の.c
ファイルでアクセスされているヘッダーファイルの何かを変更した場合です。.c
しかし、makeは、ファイルを再度開くまでそれを認識しませんsave & quit
。
Makefileの内容はこの投稿で見ることができます:
Makefileに関する質問-「$+」とは何ですか?ここで.cファイル/依存関係はどこで呼び出されますか?
これも問題ですが、ここでお話ししたい実際の問題は別物です。
すべてのファイルをコンパイルするために私が行ったことはmake clean
、実際にすべてのオブジェクトファイルを削除してからmake
再度実行したことですが、今回はエラーが発生します:-
....
mec/gen_crc32table > mec/crc32table.h
mec/gen_crc32table: 1: mec/gen_crc32table: Syntax error: end of file unexpected
(expecting ")")
make: *** [mec/crc32table.h] Error 2
内容を確認しcrc32table.h
ましたが、ファイルが空です。crc32table.h
そのため、以前のコードのバックアップからコピーして、正常に実行されるようになりました。今、私はmake clean
それをチェックするために実行して「make」をもう一度実行しますが、今回は正常に動作しています。
ここで何が謎なのかわからない?
これらの行は私が理解できないことをしていると思いますか?これについて私を助けてください。
crc32.o: mec/crc32table.h mec/crc32.c
$(CC) -o $@ -c -I. $(CFLAGS) mec/crc32.c
mec/crc32table.h: mec/gen_crc32table
mec/gen_crc32table > mec/crc32table.h