2012-10-16 52 views
1

我是makefile的新手。我有一個makefile,我希望它從多個.cpp文件生成一個共享庫。但是下面的makefile只根據相同的.cpp文件生成不同的.so。誰能幫忙?這個makefile有什麼問題

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:***沒有規則來製作目標'../build_Debug/SampleAuthenticator.o',這是'libMyPlugIn.so'所需要的。停止 –

+0

我只是通過提供正確的路徑使其工作...再次感謝! –

0

這些都是我在makefile文件使用的規則和他們的工作,希望它可以幫助你

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

謝謝你的評論! –