Несколько двоеточий и знак равенства в 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. Это не имеет смысла ...
Я не понимаю, что здесь означает знак равенства и что означают множественные двоеточия.