我的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中做错了什么?
答案 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 $@ $<