'Makefile'에 해당되는 글 1

  1. Makefile 2009/04/11

Makefile

Posted at 2009/04/11 18:08 // in Note/ETC // by drDorothy
이번 SP 숙제하면서 급 다른 기능이 필요해서 수정..
디버그모드 릴리즈모드 구분하고, 프로파일 분석루틴 추가..
실행파일명은 현재 작업중인 폴더명으로 자동 컴파일됨

DBG_SUFFIX = _dbg

APPS    = $(word $(words $(subst /, ,$(shell pwd))), $(subst /, ,$(shell pwd)))
OBJS    = $(patsubst %.c, %.o, $(wildcard *.c))
OBJS_d    = $(patsubst %.o, %.o$(DBG_SUFFIX), $(OBJS))

CC    ?= cc
CFLAGS    = -W -Wall -std=c99
DFLAGS    = -O0 -g3 -pg -DDEBUG
RFLAGS    = -O2
LFLAGS    = -lpthread

.SUFFIXES: .o .c
.c.o:
    touch $<
    $(CC) $(CFLAGS) $(RFLAGS) -c -o $@ $<

.SUFFIXES: .o$(DBG_SUFFIX) .c
.c.o$(DBG_SUFFIX):
    touch $<
    $(CC) $(CFLAGS) $(DFLAGS) -c -o $@ $<

all: release debug

release: $(OBJS)
    $(CC) $(CFLAGS) $(RFLAGS) -o $(APPS) $? $(LFLAGS)

debug: $(OBJS_d)
    $(CC) $(CFLAGS) $(DFLAGS) -o $(APPS)$(DBG_SUFFIX) $? $(LFLAGS)

analysis:
    @gprof --brief $(APPS)$(DBG_SUFFIX)

clean:
    @rm -rf *.o *.o$(DBG_SUFFIX) $(APPS) $(APPS)$(DBG_SUFFIX) gmon.out

run:
    @-./$(APPS)
    $(APPS)

2009/04/11 18:08 2009/04/11 18:08