make-файл - компилировать все файлы с сразу
Я хочу поэкспериментировать с оптимизацией всей программы GCC. Для этого я должен передать все C-файлы сразу в интерфейс компилятора. Тем не менее, я использую makefiles для автоматизации процесса сборки, и я не эксперт, когда дело доходит до магии makefile.
Как я должен изменить makefile, если я хочу скомпилировать (возможно, даже ссылку), используя только один вызов GCC?
для справки-мой makefile выглядит так:
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)
3 ответа:
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)
вам нужно вынуть правило суффикса (%.о.% :в) в пользу правила Большого взрыва. Что-то вроде этого:
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)
Если вы собираетесь экспериментировать с оптимизацией всей программы GCC, сделайте убедитесь, что вы добавили соответствующий флаг в CFLAGS, выше.
при чтении документов для этих флагов я вижу заметки о времени ссылки оптимизация также; вы должны исследовать их тоже.