Во-первых, вы никогда не объявляли, что opt
зависит от $(OBJS)
где-либо.
Но, что более важно, вы не можете использовать переменные c, специфичные для цели, для изменения предварительных условий. Значение целевых переменных c доступно только для в рецепте . См. документы , где это обсуждается во втором абзаце.
К счастью, вы просто делаете это сложнее, чем нужно. Вместо этого:
opt: FILES+=file3 # append a file for a target
opt: OBJS:= $(addprefix $(OBJDIR)/, $(FILES))
opt: OBJS:= $(addsuffix $(OBJSUFFIX), $(OBJS))
все, что вам нужно сделать, это написать:
opt: $(OBJS) $(OBJDIR)/file3$(OBJSUFFIX)