makefile 좀 도와주세요

pool007의 이미지

소스부터 보여드리겠습니다.

[root@protos:~/os]# cat makefile
# Settings
CC      = g++
CFBASE = -Wall
CFLAGS  = $(CFBASE) -O3
LDFLAGS =
LIBS    =
SRCS    = copy_if.cpp daemon.cpp debug.cpp rule_database.cpp rule_manager.cpp transaction.cpp tx_exchange.cpp
OBJS    = $(SRCS:.cpp=.o)
DEPS    = $(SRCS:.cpp=.d)
PROGRAM = daemon
SHELL   = sh

# Builds
all: $(DEPS) $(PROGRAM)

%.d: %.cpp
        $(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< \
                | sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
                [ -s $@ ] || rm -f $@'


$(PROGRAM): $(OBJS) makefile
        $(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@


# Cleanup
clean: tagclean
        rm -f *.o core $(PROGRAM)

# Tags
tag:
        ctags -R *
        ls *.hpp *.cpp > cscope.files
        cscope -R -b *.cpp *.hpp

tagclean:
        rm -f tags cscope.files cscope.out *.d

include $(SRCS:.cpp=.d)

가장 큰 문제점은 make 를 실행하면, 최초에 *.d 파일이 없다고 에러가 나는데요. 이 에러를 보지 않고 .d 활성화 후에 include 시키려면 어떻게 해야할지를 모르겠습니다. 메뉴얼에도 확실히 나와 있지는 않더군요.

또 혹시 현재 디렉토리의 모든 cpp 파일을 $SRC에 할당하는 방법은 없을런지요.

그 외에도 개선의 여지가 있다면 많이 지적해주세요..