Несколько двоеточий и знак равенства в make-файле (требуется пояснение)

Это только часть make-файла. Я не совсем понимаю, что происходит.

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

Все, что я понимаю, это то, что эти строки компилируют файлы .cpp в .o, после «print-opts», с «cc-command». Но я не понимаю семантику.

Если я разверну макрос «OBJS», эта строка должна быть:

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

Для меня это выглядит как в «$ (SRCS: $ (SRC) /%. Cpp = $ (OBJ) /%. O)», он утверждает, что все .cpp в $ (SRC) перейдут в .o в $ (OBJ), но это будет зависеть от $ (OBJ) /%. O, который зависит от $ (SRC) /%. Cpp. Это не имеет смысла ...

Я не понимаю, что здесь означает знак равенства и что означают множественные двоеточия.

Ответы на вопрос(1)

Ваш ответ на вопрос