Mehrere Doppelpunkte und Gleichheitszeichen im Makefile (Erklärung erforderlich)

Dies ist nur ein Segment eines Makefiles. Ich verstehe nicht ganz, was los ist.

OBJS = $(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o)
$(OBJS):$(OBJ)/%.o: $(SRC)/%.cpp | print-opts
    $(cc-command)

Ich verstehe nur, dass diese Zeilen .cpp-Dateien nach 'print-opts' mit 'cc-command' in .o kompilieren. Aber ich verstehe die Semantik nicht.

Wenn ich das Makro von 'OBJS' erweitere, sollte diese Zeile sein:

$(SRCS:$(SRC)/%.cpp=$(OBJ)/%.o) : $(OBJ)/%.o: $(SRC)/%.cpp | print-opts
    $(cc-command)

Für mich sieht es so aus, als ob in '$ (SRCS: $ (SRC) /% .cpp = $ (OBJ) /% .o)' alle .cpp in $ (SRC) zu .o in $ ( OBJ), aber dies würde von $ (OBJ) /%. O abhängen, was von $ (SRC) /%. Cpp abhängt. Das ergibt keinen Sinn ...

Ich verstehe nicht, was hier Gleichheitszeichen bedeutet und was mehrere Doppelpunkte bedeuten.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage