0

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

4

1 回答 1

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

二、您的 Makefile 非常杂乱无章。最好这样做:

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

all: assignment3

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

%.o: %.cpp
        g++ -c -Wall -o $@ $<
于 2013-04-15T19:33:56.630 回答