Как скомпилировать разные c файлы с разными CFLAGS, используя Makefile?
все. Позволять'скажем, у меня есть программа, которая содержит длинный список исходных файлов C, Ac, Bc, ...., Zc, теперь я хочу скомпилировать Ac, Bc с определенными CFLAGS и скомпилировать оставшуюся часть исходных файлов с другим Значение CFLAGS.
Как написать 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 $@
%.o: %.c
@echo [Compiling]: 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 $@
%.o: %.c
@echo [Compiling]: $< $(CC) $(CFLAGS) -o $@ -c $<
lt; $(CC) $(CFLAGS) -o $@ -c 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 $@
%.o: %.c
@echo [Compiling]: $< $(CC) $(CFLAGS) -o $@ -c $<
lt;
Это работает, но выглядит просто глупо / сложно. Кто-нибудь может помочь указать, каков рекомендуемый способ сделать это в Makefile? Спасибо!