0

奇妙なことが起こっています:

メイクファイルの考え方は、複数のファイルを同時にコンパイルできるようにすることです。これらのファイルの 1 つを編集する場合、 と入力makeすると、編集されたファイルだけがコンパイルされます。

さて、何らかの理由で、私のメイクファイルは、ファイルが変更されたときに認識を停止することにしました。だから私はしなければなりません:make cleanそして、makeもう一度コンパイルできるようにする必要があります。これは、コンパイルする必要があるたびに約 1 分かかるため、ばかげています。

なぜこれが起こっているのですか?

メイクファイルには何も追加しませんでした。それはどこからともなくそれを始めたばかりです。

4

1 に答える 1

2

何かが変わった。何かが変更されない限り、プログラムは動作を停止しません。何が変わったのかを理解するのが難しいでしょう。いつでも次のように入力できます。

 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と呼ばれるマクロを提供していました。残念ながら、それは採用も標準化もされていなかったので、自分でサフィックスリストを作成する必要があります。しかし、マクロ名の選択は完全に偶然ではありませんでした。

于 2012-05-25T23:26:41.167 に答える