何かが変わった。何かが変更されない限り、プログラムは動作を停止しません。何が変わったのかを理解するのが難しいでしょう。いつでも次のように入力できます。
rm file-that-changed.o
make
変更された1つのファイルだけを再構築しますが、それは厄介です。
マルチステップのコンパイルがあり、混乱を招く中間ファイルがありますmake
か?
マルチステップのコンパイルで混乱が生じました。
非標準のファイルサフィックスをCコードにコンパイルしてから、Cからオブジェクトコード(または他の同様のマルチステップコンパイル)にコンパイルする場合、信頼性の高い再コンパイルを行うための鍵make
は、サフィックスリストを次のように整理することです。あなたの拡張機能は最初に来ます。残念ながら、組み込みのサフィックスリストが何であるかを知るための標準的な簡単な方法がないため、次のようなことを行う必要があります。
SUFFIXES = .y .l .c .o # Yacc, Lex, C, Object files
EXTRA_SUFFIX = .xc # Extreme C, or Extended C, or ...
.SUFFIXES: # Eliminate all built-in suffixes
.SUFFIXES: ${EXTRA_SUFFIX} ${SUFFIXES}
2.SUFFIXES
行目は、内線番号をリストの先頭に配置します。.xc
これで、ファイルを.c
またはファイルにコンパイルするルールを記述できます。.o
次に、ファイルを変更するときに.xc
、中間ファイルが残っている場合でも、またはファイルよりも新しい.c
という事実により、再コンパイルが確実に実行されます。.xc
.c
.o
昔々、Sunバージョンはmake
、デフォルトのサフィックスを正しい順序で含むSUFFIXESと呼ばれるマクロを提供していました。残念ながら、それは採用も標準化もされていなかったので、自分でサフィックスリストを作成する必要があります。しかし、マクロ名の選択は完全に偶然ではありませんでした。