2012-10-16 3 views
1

메이크 파일을 처음 사용했습니다. makefile을 가지고 있는데, 하나 이상의 .cpp 파일에서 공유 라이브러리를 생성하고 싶습니다. 그러나 다음 메이크 파일은 동일한 .cpp 파일을 기반으로 다른 .so 만 생성합니다. 누구든지 도와 줄 수 있습니까?이 메이크 파일의 문제점

SRC_DIR = $(PROJECT_BASE_DIR)/src 

    SRCFILES = $(wildcard $(SRC_DIR)/*.cpp) 
    OBJFILES = $(patsubst  $(SRC_DIR)/%.cpp,$(BUILD_TARGET_DIR)/%.$(OBJ_EXTENSION),$(SRCFILES)) 

    ... 

    ifeq ($(OS),$(OS_LINUX)) 
    $(CLIENTLIB): $(OBJFILES) 
     gcc $(CXXFLAGS) -o [email protected] $< $(LINKER_FLAGS) 

    $(OBJFILES): $(SRCFILES)   ==> I believe this is the line with problem. 
     gcc $(CXXFLAGS) -c -o [email protected] $< 

답변

2

현재 하나의 컴파일 단계에서 모든 .cpp 파일을 모든 .o 파일로 변환하려고합니다.

변경 :

$(OBJFILES): $(SRCFILES)   ==> I believe this is the line with problem. 
    gcc $(CXXFLAGS) -c -o [email protected] $< 

에 :

%.$(OBJ_EXTENSION): %.cpp 
    gcc $(CXXFLAGS) -c -o [email protected] $< 
+0

고마워에 도움 수 있기를 바랍니다 빠른 응답. 다음과 같은 오류가 발생합니다 : [exec] gmake : ***'libMyPlugIn.so '에 필요한'../build_Debug/SampleAuthenticator.o'대상을 만드는 규칙이 없습니다. Stop –

+0

방금 ​​경로를 제공하여 작동하게했습니다 ... 다시 한 번 감사드립니다! –

0

이는 내 메이크 파일에서 사용하는 규칙 그리고 그들은 작동 그것은 당신에게

CFILES  = $(wildcard *.c) 
OBJS  = $(CFILES:%.c=%.o) 
%.o: %.c 
    $(CC) $(CFLAGS) -I$(INCLUDE) $< -o [email protected] 
+0

의견을 내 주셔서 감사합니다! –