Ответ 1
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 [email protected] $^ $(CFLAGS) $(LIBS)
Я хочу экспериментировать с оптимизацией всей программы GCC. Для этого мне нужно передать все C файлы сразу в интерфейс компилятора. Однако я использую make файлы для автоматизации процесса сборки, и я не эксперт, когда дело доходит до make-магии.
Как мне изменить make файл, если я хочу скомпилировать (возможно, даже ссылку), используя только один вызов GCC?
Для справки - мой make файл выглядит так:
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 [email protected]
test: $(OBJ)
gcc -o [email protected] $^ $(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 [email protected] $^ $(CFLAGS) $(LIBS)
SRCS=$(wildcard *.c)
OBJS=$(SRCS:.c=.o)
all: $(OBJS)
Вам нужно вынуть правило суффикса (%.o:%.c) в пользу правила большого взрыва. Что-то вроде этого:
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 [email protected] $(CFLAGS) $(LIBS) $(SRCS)
Если вы собираетесь экспериментировать с оптимизацией всей программы GCC, сделайте убедитесь, что вы добавили соответствующий флаг в CFLAGS, выше.
При чтении документов для этих флагов я вижу заметки о времени ссылки оптимизация; вы также должны исследовать их.