template examples create c makefile

examples - makefiles-compila todos los archivos c a la vez



makefile python (3)

Quiero experimentar con las optimizaciones de todo el programa GCC. Para hacerlo, tengo que pasar todos los archivos C de una vez a la interfaz del compilador. Sin embargo, utilizo makefiles para automatizar mi proceso de compilación, y no soy un experto en lo que respecta a la magia de los archivos make.

¿Cómo debo modificar el archivo MAKE si quiero compilar (tal vez incluso un enlace) usando solo una llamada a GCC?

Como referencia, mi archivo MAKE se ve así:

LIBS = -lkernel32 -luser32 -lgdi32 -lopengl32 CFLAGS = -Wall OBJ = 64bitmath.o / monotone.o / node_sort.o / planesweep.o / triangulate.o / prim_combine.o / welding.o / test.o / main.o %.o : %.c gcc -c $(CFLAGS) $< -o $@ test: $(OBJ) gcc -o $@ $^ $(CFLAGS) $(LIBS)


LIBS = -lkernel32 -luser32 -lgdi32 -lopengl32 CFLAGS = -Wall # Should be equivalent to your list of C files, if you don''t build selectively SRC=$(wildcard *.c) test: $(SRC) gcc -o $@ $^ $(CFLAGS) $(LIBS)


SRCS=$(wildcard *.c) OBJS=$(SRCS:.c=.o) all: $(OBJS)


Necesita sacar su regla de sufijo (% .o:% .c) a favor de una regla de big-bang. Algo como esto:

LIBS = -lkernel32 -luser32 -lgdi32 -lopengl32 CFLAGS = -Wall OBJ = 64bitmath.o / monotone.o / node_sort.o / planesweep.o / triangulate.o / prim_combine.o / welding.o / test.o / main.o SRCS = $(OBJ:%.o=%.c) test: $(SRCS) gcc -o $@ $(CFLAGS) $(LIBS) $(SRCS)

Si vas a experimentar con la optimización de todo el programa de GCC, asegúrate de agregar la bandera apropiada a CFLAGS, arriba.

Al leer los documentos de esos indicadores, también veo notas sobre la optimización del tiempo de enlace; deberías investigar esos también.