Если у вас нет каких-то особых требований, которые вы не заявили, я предлагаю позволить make сделать работу за вас (правила и флаги по умолчанию).
PROGS = prog1 prog2
COMMON_OBJS = common.o
all: $(PROGS)
prog1 prog2: % : %.o $(COMMON_OBJS)
clean:
rm -f $(PROGS) $(PROGS:%=%.o) $(COMMON_OBJS)
Вы по-прежнему можете устанавливать CLFAGS, LDFLAGS и т. Д. (В командной строке или в файле makefile), и правила по умолчанию будут выбирать их.
Если вы используете GNU make, вы можете увидеть все сгенерированные и автоматические правила, запустив:
make -n -p
Это большой вывод, поэтому я советую отправить его на ваш пейджер.