makefile中未定义的引用错误

Undefined reference error in makefile

本文关键字:引用 错误 未定义 makefile      更新时间:2023-10-16

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

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

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

二世。您的Makefile非常无组织。最好这样做:

OBJECTS = $(patsubst %.cpp, %.o, $(wildcard *.cpp))
all: assignment3
assignment3: $(OBJECTS)
        g++ -o $@ $^
%.o: %.cpp
        g++ -c -Wall -o $@ $<