Makefile 만들기

woosokie의 이미지

make 파일 만들기를 간단히 공부하고 만들어 볼려고하는데요.
제가 만들고자 하는 바는 VC++ 처럼 프로젝트를 구성하고 싶습니다.
근데 쉽지가 않네요 ㅡㅡ;

#########################################
SRCS = test1.cpp test2.cpp
OBJS = $(SRCS:.cpp=.o)
TARGET = libTest.a
CPPFLAGS = -Wall -D_LINUX -I../Include

$(TARGET) : $(OBJS)
ar cru $@ $(OBJS)

all : $(TARGET)

clean :
rm -f $(TARGET) $(OBJS)
#########################################

1. 헤더파일 디펜던시 존재
- 위에 대로 하면 헤더가 수정 되어도 컴파일이 안되는 문제가 있습니다.
2. 소스가 컴파일 되면 해당 소스에 대한 오브젝트 파일이 특정 디렉토리에 모아지길 원합니다.
- 위에는 소스와 오브젝트 파일이 같은 디렉토리에 존재하네요.
컴파일된 오브젝트 파일이 특정 디렉토리에 생겼으면 합니다.

woosokie의 이미지

참고로 라이브러리를 만드는 과정이고 소스는 각각 다른 디렉토리에 있습니다.
해결하기 정말 힘드네요 ㅡㅡ;

#########################################
SRCS = ../A/test1.cpp ../B/test2.cpp
OBJS = $(SRCS:.cpp=.o)
TARGET = libTest.a
CPPFLAGS = -Wall -D_LINUX -I../Include

$(TARGET) : $(OBJS)
ar cru $@ $(OBJS)

all : $(TARGET)

clean :
rm -f $(TARGET) $(OBJS)
#########################################

primewizard의 이미지

제 생각은 vpath를 사용하면 될 것 같습니다.

참고:
http://wiki.kldp.org/wiki.php/%B0%B3%B9%DF%C0%DA%C4%DA%B3%CA#s-3.2

sio4의 이미지

makedepend 라는 명령어의 매뉴얼페이지를 참고해보세요.
또는, 작성하신 소스파일의 갯수가 그리 많지 않다면,

$(OBJS): package.h module.h config.h

와 유사한 줄을 한 줄 추가해주는 것으로도 가능하겠습니다.

--
"The love you take is equal to the love you make." The End, by Beatles

--
"The love you take is equal to the love you make." The End, by Beatles