0

我有一个小问题.. 我正在尝试修改一个工作 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:: 等的引用,谢谢!

4

1 回答 1

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...

于 2012-11-27T12:00:18.457 回答