todos. Digamos que tengo un programa que contiene una larga lista de archivos fuente C, Ac, Bc, ...., Zc, ahora quiero compilar Ac, Bc con ciertos CFLAGS, y compilar el resto de los archivos fuente con un archivo diferente. Valor de CFLAGS¿Cómo compilar diferentes archivos c con diferentes CFLAGS usando Makefile?
¿Cómo escribir un Makefile para realizar el trabajo descrito anteriormente? Actualmente lo que estoy haciendo en mi Makefile es:
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 $<
Funciona, pero se ve estúpido/complicado. ¿Alguien puede ayudar a señalar cuál es la forma recomendada de hacer esto en Makefile? ¡Gracias!
Si no desea volver a definir la regla de compilación predeterminada .c -> .o, un 'CFLAGS + = $ (EXTRA_CFLAGS) 'funcionaría también (al menos para GNU make). – sstn
La adición directa a CFLAGS parece funcionar también: '$ (SPECIAL_OBJS): CFLAGS + = - std = c99' (GNU make again). – sstn
@sstn Como se indicó anteriormente, se puede usar cualquier forma válida de asignación. –