C ++ Makefile没有编译依赖关系/链接错误?

时间:2018-02-13 20:39:52

标签: c++ makefile makefile-project makefile-errors

希望这不是一个愚蠢的问题。 我是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"。

我真的不明白如何解决这个问题。我应该改变依赖关系的顺序吗?

谢谢!

1 个答案:

答案 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来禁用它们。