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.