Makefile 다중 타겟 (Multiple target) ... 도움을 요청합니다.^^
안녕하세요.
Makefile 만들다가 고민.. 끝에 내공 부족으로 글을 올림니다.
사용 os: freebsd 6 i386
smva_main.cpp cmva_main.cpp
database.cpp cfgconfig.cpp usage.cpp network.cpp utility.cpp mylog.cpp
이렇게 cpp 파일이 있습니다.
smva_main.cpp 와 cmva_main.cpp는 서로 조금은 다른 일을 하기에 두개의 바이너리 파일이 나왔으면 합니다.
# ----------------++
# PROCESS Name
# ----------------++
PGC_NAME = cmva
PGS_NAME = smva
CSRC = cmva_main.cpp database.cpp cfgconfig.cpp usage.cpp network.cpp utility.cpp mylog.cpp
SSRC = smva_main.cpp database.cpp cfgconfig.cpp usage.cpp network.cpp utility.cpp mylog.cpp
COBJS = cmva_main.o database.o cfgconfig.o usage.o network.o utility.o mylog.o
SOBJS = smva_main.o database.o cfgconfig.o usage.o network.o utility.o mylog.o
all : cmva smva
cmva : $(COBJS)
$(CXX) ${CFLAGS} ${LDFLAGS} ${COBJS} -o ${PGC_NAME} ${LIBS} ${LFLAGS} ${EXTRA_LIB}
strip ${PGC_NAME}
.cpp.o : $(CSRC)
$(CXX) $(CFLAGS) -c -o $@ $< ${INCLUDEDIR} ${DFLAGS} -DPROG_NAME=\"$(PGC_NAME)\"
smva : $(SOBJS)
$(CXX) ${CFLAGS} ${LDFLAGS} ${SOBJS} -o ${PGS_NAME} ${LIBS} ${LFLAGS} ${EXTRA_LIB}
strip ${PGS_NAME}
.cpp.o : $(SSRC)
$(CXX) $(CFLAGS) -c -o $@ $< ${INCLUDEDIR} ${DFLAGS} -DPROG_NAME=\"$(PGS_NAME)\"
오브젝트 만들시에 다른 PROG_NAME이 들어가야합니다.
그런데 make 하면 PROG_NAME에 한개만 들어가게 됩니다.< 파일 smva,cmva는 나오지만.. >
제가 원하는건 각각의 cmva, smva가 들어가는것인데요..
아마도 .opp.o 에서 이미 존재 하는 오브젝트 파일 때문인것 같은데..
다른 PROG_NAME이 들어가기에 조금 골치 입니다.
조언 부탁드립니다^^
원하시는 방법은
원하시는 방법은 조금 돌아가셔야 할 것 같습니다.
* 두개의 target을 만들기 위해서는 두가지 타입/이름의 object 파일을 지정하셔야 합니다.
* 첫번째 target이 만들어진 시점에서 이미 object 파일이 생성되었기 때문에 새롭게 오브젝트 파일을 빌드하지 않게 됩니다.
* 이런식으로 하시면 될 것 같습니다.(물론 실험해 보지는 않았습니다.)
.h 파일을 찾을수 없다고 나옵니다..
우선 관심과 답글 감사합니다.
실행해본 결과..ㅡㅡ;; .
cpp파일이 모두 지워졌구요.ㅋㅋ clean 옵션에서..ㅡㅡ; COBJS 변수를 사용하니까.ㅎ
뭐..백업은 항시 되어 있으니.순간 당혹감..ㅎㅎ
우선 make 해본결과.. .h 파일을 찾을수 없다고 나오네요..
아..ㅡ_-;어찌 해야해야 할까요.. help me~~
검은 모니터 안에서
나만의 세상을 창조하라.
정확하게 어떤
정확하게 어떤 상황인지 이해가 가지 않네요..
* 위에 올리신 Makefile에는 clean이 없는데요...
* 그리고 .h 파일이 없다는 얘기는 Makefile의 얘기가 아니라 컴파일러의 에러같습니다.
댓글 달기