alle. Nehmen wir an, ich habe ein Programm, das eine lange Liste von C-Quelldateien enthält, Ac, Bc, ...., Zc, jetzt möchte ich Ac, Bc mit bestimmten CFLAGS kompilieren und den Rest der Quelldateien mit einem anderen kompilieren CFLAGS-Wert.Wie kompiliere ich verschiedene c-Dateien mit verschiedenen CFLAGS mit Makefile?
Wie schreibe ich ein Makefile für den oben beschriebenen Job? Derzeit was ich in meinem Makefile mache ist:
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 $<
Es funktioniert, aber sieht nur dumm/kompliziert. Kann jemand helfen, darauf hinzuweisen, was die empfohlene Vorgehensweise in Makefile ist? Vielen Dank!
Wenn Sie die Standard-Compilierregel .c -> .o nicht neu definieren wollen, ein 'CFLAGS + = $ (EXTRA_CFLAGS) 'würde auch funktionieren (zumindest für GNU make). – sstn
Das direkte Anhängen an CFLAGS scheint ebenfalls zu funktionieren: '$ (SPECIAL_OBJS): CFLAGS + = - std = c99' (GNU make again). – sstn
@sstn Wie oben erwähnt, kann jede gültige Form der Zuweisung verwendet werden. –