tous. Disons que j'ai un programme qui contient une longue liste de fichiers source C, Ac, Bc, ...., Zc, maintenant je veux compiler Ac, Bc avec certains CFLAGS, et compiler la partie restante des fichiers source avec un autre Valeur CFLAGS. Comment écrire un Makefile pour faire le travail décrit ci-dessus?Comment compiler différents fichiers c avec différents CFLAGS en utilisant Makefile?
actuellement ce que je fais dans mon Makefile est:
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 $<
Cela fonctionne, mais semble stupide/compliqué. Quelqu'un peut-il aider à indiquer quelle est la manière recommandée de le faire dans Makefile? Merci!
Si vous ne voulez pas redéfinir la règle de compilation .c -> .o par défaut, un 'CFLAGS + = $ (EXTRA_CFLAGS) 'fonctionnerait aussi bien (au moins pour make GNU). – sstn
L'ajout direct à CFLAGS semble également fonctionner: '$ (SPECIAL_OBJS): CFLAGS + = - std = c99' (make GNU again). – sstn
@sstn Comme indiqué ci-dessus, toute forme d'affectation valide peut être utilisée. –