디버그모드 릴리즈모드 구분하고, 프로파일 분석루틴 추가..
실행파일명은 현재 작업중인 폴더명으로 자동 컴파일됨
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)
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)
Makefile