makefile 에 대한 질문 입니다.

ys2cdh의 이미지

makefile 중 이해가 안되는 부분이 있어서 이를 해결 하고자 님들에게 질문을 드립니다.

makefile------------------------------
.SUFFIXES : .cpp .o

CXX = g++

INC = -I/usr/local/include/boost-1_37
LIBS = -L/usr/local/lib/ -lboost_regex-gcc42-mt-1_37
LINK = g++
CXXFLAGS = -c $(INC)

OBJS = boostTest.o
SRCS = boostTest.cpp

TARGET = boostTest

.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INC) -o $@ $<

all : $(TARGET)
$(TARGET): $(OBJECTS) $(LINK) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

clean :
rm -rf $(OBJS) $(TARGET) core

new :
$(MAKE) clean
$(MAKE) all
-----------------------------------------------------

$ make all
g++ -c -I/usr/local/include/boost-1_37 boostTest.cpp -o boostTest
boostTest: g++ -c -I/usr/local/include/boost-1_37 -o boostTest -L/usr/local/lib/ -lboost_regex-gcc42-mt-1_37
make: boostTest:: 명령을 찾지 못했음
make: *** [all] 오류 127

위와 같이 결과가 나옵니다.

.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INC) -o $@ $<
-->

g++ -c -I/usr/local/include/boost-1_37 boostTest.cpp -o boostTest

이 부분은 위의 매크로가 정상적으로 변한것 같은데

all : $(TARGET)
$(TARGET): $(OBJECTS) $(LINK) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
-->

boostTest: g++ -c -I/usr/local/include/boost-1_37 -o boostTest -L/usr/local/lib/ -lboost_regex-gcc42-mt-1_37

위와 같이 나오면서 에러가 나옵니다.

원래는 이렇게 나와야 정상이 아닌가요?
(g++ -c -I/usr/local/include/boost-1_37 -o boostTest -L/usr/local/lib/ -lboost_regex-gcc42-mt-1_37)

어떤 부분에서 실수를 했는지 모르겠습니다. 하루 내내 고민 했봤는데 도대체 모르겠습니다. ㅠㅠ

저의 잘못을 누구 통쾌하게 알려 주세요~

hayarobi의 이미지

: 다음에는 의존하는 것 목록을 써야 합니다.

타겟이 오브젝트파일에 의존성을 가져서 오브젝트 파일이 변할 때마다 갱신되야 할테니 아래처럼 나와야 하지 않을까요? $(OBJECTS) 는 $(OBJS)를 잘못 쓴 것이라고 생각한다면 아래처럼 나오지 않을까 싶습니다.

$(TARGET): $(OBJS)
	$(LINK) $(CXXFLAGS) -o $(TARGET) $(OBJS) $(LIBS)

=================
잠못자는 한솔아빠

=================
잠못자는 한솔아빠

ys2cdh의 이미지

초보라 copy % paste 했더니 그럼 부분이 있었습니다. 감사합니다.