wszystko. Załóżmy, że mam program, który zawiera długą listę plików źródłowych C, Ac, Bc, ...., Zc, teraz chcę skompilować Ac, Bc z pewnymi CFLAGS i skompilować resztę plików źródłowych z inną Wartość CFLAGS.Jak skompilować różne pliki c z różnymi CFLAGS używając Makefile?
Jak napisać plik Makefile, aby wykonać wyżej opisaną pracę? obecnie to, co robię w moim Makefile to:
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 $<
Działa, ale wygląda po prostu głupio/skomplikowanie. Czy ktoś może pomóc wskazać, jaki jest zalecany sposób robienia tego w Makefile? dzięki!
Jeśli nie chcesz ponownie definiować domyślnej reguły kompilacji .c -> .o, 'CFLAGS + = $ (EXTRA_CFLAGS) 'również by działało (przynajmniej dla GNU make). – sstn
Bezpośrednie dołączanie do CFLAGS również działa: '$ (SPECIAL_OBJS): CFLAGS + = - std = c99' (GNU make again). – sstn
@sstn Jak wspomniano powyżej, można użyć dowolnej ważnej formy przypisania. –