我有一个小问题..我试图修改一个工作的Makefile来链接我决定在我的代码simpletrial.cpp中添加的函数(该函数是IniFile.cpp) 我以前的工作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)$@
@echo "$@ done"
clean:
@rm -f $(OBJ) $(TESTO) core *~ src/*~ include/*~
.$(SrcSuf).$(ObjSuf):
$(CXX) $(CXXFLAGS) -c $< -o $@
我试过没有成功编译和链接IniFile.cpp但我总是收到错误“未定义引用'IniFile :: etc等 谢谢!
答案 0 :(得分:0)
您的链接行如下:
$(LD) $(LDFLAGS) $^ $(GLIBS) $(OutPutOpt)$@
在这里你链接到$ ^这是规则的所有预先要求,在这种情况下是$(TESTO)并且是simpletrial.o,你似乎没有IniFile.cpp,所以它不会与它联系。要修复它,只需将IniFile.cpp添加到您的测试中,如下所示:
TESTS := simpletrial.cpp InFile.cpp
然后它应该编译并将两个文件链接在一起并因此产生simpletrial。
此外,我认为你的TESTO系列也可能需要改变:
TESTO := $(TESTS:.cpp=.o)
那应该取$(TESTS)变量中的值并将后缀从.cpp更改为.o,当前定义只会将.C更改为.o ...