все. Предположим, у меня есть программа, которая содержит длинный список исходных файлов C, Ac, Bc, ...., Zc, теперь я хочу скомпилировать Ac, Bc с определенными CFLAGS и скомпилировать остальную часть исходных файлов с другим Значение CFLAGS.Как скомпилировать различные файлы c различными CFLAGS с помощью Makefile?
Как написать Makefile для выполнения описанной выше работы? в настоящее время я делаю в своем Makefile:
OBJ=[all other .o files here, e.g. D.o, D.o, E.o .... Z.o]
SPECIAL_OBJS=A.o B.o
all: $(OBJ) $(SPECIAL_OBJS)
$(SPECIAL_OBJS):
@echo [Compiling]: $(@:.o=.c)
$(CC) [SOME OTHER GCC OPTIONS HERE] $(CFLAGS) -c $(@:.o=.c) -o [email protected]
%.o: %.c
@echo [Compiling]: $<
$(CC) $(CFLAGS) -o [email protected] -c $<
Это работает, но выглядит просто глупо/сложно. Может ли кто-нибудь помочь указать, что рекомендуется делать в Makefile? благодаря!
Если вы не хотите переопределять правило компиляции по умолчанию .c -> .o, 'CFLAGS + = $ (EXTRA_CFLAGS) 'будет работать (по крайней мере, для GNU make). – sstn
Непосредственно добавление к CFLAGS также работает: '$ (SPECIAL_OBJS): CFLAGS + = - std = c99' (GNU make again). – sstn
@sstn Как отмечено выше, может использоваться любая действительная форма назначения. –