makefiles – comstack tous les fichiers c à la fois

Je veux expérimenter avec les optimisations de programme complet de GCC. Pour ce faire, je dois transmettre tous les fichiers C en même temps à l’interface du compilateur. Cependant, j’utilise makefiles pour automatiser mon processus de compilation, et je ne suis pas un expert en matière de magie de makefile.

Comment dois-je modifier le fichier Make si je veux comstackr (peut-être même un lien) en utilisant un seul appel à GCC?

Pour référence – mon makefile ressemble à ceci:

LIBS = -lkernel32 -luser32 -lgdi32 -lopengl32 CFLAGS = -Wall OBJ = 64bitmath.o \ monotone.o \ node_sort.o \ planesweep.o \ sortingangulate.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) 

Vous devez sortir votre règle de suffixe (% .o:% .c) en faveur d’une règle du big-bang. Quelque chose comme ça:

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

Si vous envisagez d’optimiser l’optimisation de l’ensemble du programme de GCC, assurez-vous d’append l’indicateur approprié à CFLAGS, ci-dessus.

En lisant les documents pour ces indicateurs, je vois également des notes sur l’optimisation du temps de liaison; vous devriez enquêter sur eux aussi.