2012-11-27 139 views
0

我有一個微不足道的問題..我試圖修改一個工作的Makefile來鏈接一個函數,我決定在我的代碼中添加simpletrial.cpp(該函數是IniFile.cpp) 我的舊工作Makefile是:makefile鏈接問題

include Makefile.arch 
TESTS   := simpletrial.cpp 
TESTO   := $(TESTS:.C=.o) 
TEST   := simpletrial 

OBJ    = $(TESTO) 
PROGRAMS  = $(TEST) 

CXXFLAGS  += 
CXXFLAGS  += 
GLIBS   += 

.SUFFIXES: .$(SrcSuf) .$(ObjSuf) .$(DllSuf) 

all:   $(PROGRAMS) 

$(TEST):  $(TESTO) 
     $(LD) $(LDFLAGS) $^ $(GLIBS) $(OutPutOpt)[email protected] 
     @echo "[email protected] done" 

clean: 
     @rm -f $(OBJ) $(TESTO) core *~ src/*~ include/*~ 

.$(SrcSuf).$(ObjSuf): 
     $(CXX) $(CXXFLAGS) -c $< -o [email protected] 

我曾嘗試沒有成功編譯和鏈接IniFile.cpp但我總是收到錯誤消息「未定義的引用「INIFILE ::等等等等 感謝

回答

0

您的鏈接線如下:

$(LD) $(LDFLAGS) $^ $(GLIBS) $(OutPutOpt)[email protected] 

在這裏,您鏈接$ ^,這是規則的所有前置請求,在這種情況下是$(TESTO),並且是simpletrial.o,您似乎沒有IniFile.cpp,所以它不會與它鏈接。要修復它只是添加IniFile.cpp到你的測試如下:

TESTS   := simpletrial.cpp InFile.cpp 

那麼就應該編譯和這兩個文件鏈接在一起,併產生simpletrial結果。

此外,我認爲你TESTO行可能需要改變,以及:

TESTO   := $(TESTS:.cpp=.o) 

這應該在$值(測試)變量,然後從的.cpp更改後綴到.O,目前清晰度只會改變.C到.o ...

+0

太棒了!有用! – Tiutto