我创建了一个简单的C ++项目并自己创建了makefile。
makefile如下所示:
all: project1.exe
clean:
rm main.o project1.exe
project1.exe: main.o
g++ -g -o project1 main.o
main.o:
g++ -c -g main.cpp
最初我只有一个main.cpp文件。一切顺利,直到我创建了一个新类(Token.h)并将其添加到我的项目中。我在主文件的tope中添加了一个新的include语句,但是当我尝试构建项目时,我在控制台中收到了这条消息:
make all
g++ -c -g main.cpp
g++ -g -o project1 main.o
Undefined symbols for architecture x86_64:
"Token::print()", referenced from:
_main in main.o
"Token::Token()", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [project1.exe] Error 1
为了让我的项目正确构建,任何人都知道我必须做什么,因为我已经为它添加了一个类?我是否需要对makefile进行更改?如果是这样,是什么?
答案 0 :(得分:1)
向makefile添加规则:
token.o : token.cpp token.hpp
g++ -g -c token.cpp
修改makefile中的一些规则:
main.o: main.cpp token.hpp
g++ -g -c main.cpp
project.exe : main.o token.o
g++ -o project.exe main.o token.o
在上面的片段中,token.hpp
类被添加为main.o
的依赖项。 token.o
文件已添加为project.exe
的依赖项,并作为链接阶段的参数。