programing

makefiles-모든 c 파일을 한 번에 컴파일

nasanasas 2020. 12. 24. 23:50
반응형

makefiles-모든 c 파일을 한 번에 컴파일


GCC 전체 프로그램 최적화를 실험하고 싶습니다. 이렇게하려면 모든 C 파일을 한 번에 컴파일러 프런트 엔드에 전달해야합니다. 그러나, 저는 메이크 파일을 사용하여 빌드 프로세스를 자동화하고 메이크 파일 마법에 관해서는 전문가가 아닙니다.

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)

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)

빅뱅 규칙을 위해 접미사 규칙 (% .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 $@  $(CFLAGS) $(LIBS) $(SRCS)

GCC의 전체 프로그램 최적화를 실험하려면 위의 CFLAGS에 적절한 플래그를 추가해야합니다.

해당 플래그에 대한 문서를 읽으면서 링크 타임 최적화에 대한 참고 사항도 참조합니다. 당신도 그것들을 조사해야합니다.

ReferenceURL : https://stackoverflow.com/questions/170467/makefiles-compile-all-c-files-at-once

반응형