makefile中未定义的引用错误

时间:2013-04-15 19:31:39

标签: c++ makefile g++

我的makefile存在问题

assignment3: BSTapp.cpp BST.o
        g++ -o assignment3 BSTapp.cpp BST.o
BST.o:  BST.cpp BST.h Node.o
    g++ -c BST.cpp -o BST.o
Node.o: Node.h Node.cpp
    g++ -c Node.cpp -o Node.o

获取Node类中所有方法的未定义引用。但是如果我使用

直接编译
g++ -o assignment3 BSTapp.cpp BST.h BST.cpp Node.h Node.cpp
一切正常。我在makefile中做错了什么?

1 个答案:

答案 0 :(得分:2)

因为您在Node.o规则下的makefile命令中遗漏了assignment3:文件:

g++ -o assignment3 BSTapp.cpp BST.o

应该是

g++ -o assignment3 BSTapp.cpp BST.o Node.o

说明:

予。 请不要自行编译标题!

g++ -o assignment3 BSTapp.cpp BST.h BST.cpp Node.h Node.cpp

应该是

g++ -o assignment3 BSTapp.cpp BST.cpp Node.cpp

II。你的Makefile非常无组织。更好地做到这一点:

OBJECTS = $(patsubst %.cpp, %.o, $(wildcard *.cpp))

all: assignment3

assignment3: $(OBJECTS)
        g++ -o $@ $^

%.o: %.cpp
        g++ -c -Wall -o $@ $<