Wiele dwukropków i znak równości w makefile (potrzebujesz wyjaśnienia)

To tylko segment pliku makefile. Nie do końca rozumiem, co się dzieje.

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

Rozumiem tylko, że te linie kompilują pliki .cpp do .o, po „print-opts”, za pomocą „cc-command”. Ale nie rozumiem semantyki.

Jeśli rozwinę makro „OBJS”, ta linia powinna być:

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

Dla mnie wygląda to jak w '$ (SRCS: $ (SRC) /%. Cpp = $ (OBJ) /%. O)', twierdzi, że wszystkie .cpp w $ (SRC) przyjdzie do .o w $ ( OBJ), ale zależałoby to od $ (OBJ) /%. O, który zależy od $ (SRC) /%. Cpp. To nie ma sensu ...

Nie rozumiem, jakie jest znaczenie znaku równości tutaj i co oznacza wiele dwukropków.

questionAnswers(1)

yourAnswerToTheQuestion