これはメークファイルのセグメントに過ぎません。私は何が起こっているのかよく分かりません。メイクファイルの複数のコロンと等号(必要説明)
OBJS = $(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o)
$(OBJS):$(OBJ)/%.o: $(SRC)/%.cpp | print-opts
$(cc-command)
私は理解してすべてが 'CC-コマンド' で、 '印刷OPTS' の後、これらの行は.oのに.cppファイルをコンパイルしています。しかし、私は意味論を理解していません。
私は 'OBJS' のマクロを展開すると、この行は次のようになります。。$(SRC)/%CPP = $(OBJ:私に
$(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o) : $(OBJ)/%.o: $(SRC)/%.cpp | print-opts
$(cc-command)
、それは「$(SRCSでのように見えます)は、$(SRC)のすべての.cppが$(OBJ)の.oに来ると主張していますが、これは$(OBJ)/% /%.cpp。これは意味をなさない...
ここでは等号の意味は何か、複数のコロンは何を意味するのか分かりません。
はどうもありがとうございました。 gnuの 'make'マニュアルへの参照は非常に参考になります。 (私は前にそのマニュアルを見ていましたが、必要な情報を見つけることができませんでした) – qinsoon
Tadは置換参照で混乱しました。だから私は 'main.c'を持っていれば、それをオブジェクトファイルのディレクトリに張りつめ、ファイルの拡張子を' .o'に変更するだけです。これにより、ファイルの内容が保持され、拡張機能が変更されます。これにより、最終的にすべてのオブジェクトファイルの名前が設定されます。次に、名前のリストをターゲットとして使用し、オブジェクトファイルにコンパイルし、コンパイルしたばかりの新しいオブジェクトファイルでファイルを上書きします。正しい? – Ungeheuer
@Ungeheuer:いいえ、置換参照はファイルに対して何もせず、単に変数を変換するだけです。 "source_dir/main.cpp"を "object_dir/main.o"に変換します。それらは*ファイル名ではなく*ファイル名*です。 "object_dir/main.o"という文字列があれば、その名前のファイルをどのように構築するかを知っているパターンルールに渡すことができます。 – Beta