希望这不是一个愚蠢的问题。 我是C ++中Makefiles的新手,我只写了一个简单的类似:
game: game.o state.o move.o board.o
g++ state.o move.o board.o game.o -o game
game.o: game.cpp
g++ -c game.cpp
state.o: state.cpp state.h
g++ -c state.cpp
move.o: move.cpp move.h
g++ -c move.cpp
board.o: board.cpp board.h
g++ -c board.cpp
clean:
rm *.o game
当我运行" make game"时,在state.cpp中定义的所有函数都在state.cpp中定义,并且state.cpp包含move.h和board.h。基本上,它好像我只是在运行" g ++ -c game.c"。
我真的不明白如何解决这个问题。我应该改变依赖关系的顺序吗?
谢谢!
答案 0 :(得分:3)
考虑到实际错误是这样的:
g++ game.C -o game
undefined reference to State::setSize(int)' undefined reference to State::setToMove(int)' undefined reference to State::setToMove(int)'
我会说你没有game.cpp
源文件,而是game.C
源文件,并且隐式make规则开始构建game
。参见:
您可以使用--no-builtin-rules
选项运行make来禁用它们。