Надеюсь, это не глупый вопрос.
Я новичок в Makefiles на C ++, и я написал такой простой:
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», все функции, вызываемые в game.cpp, которые определены в state.cpp, генерируют ошибку, а state.cpp включает в себя move.h и board.h. По сути, это как будто я использую только g ++ -c game.c.
Я не очень понимаю, как это исправить. Должен ли я менять порядок зависимостей?
Спасибо!
Учитывая фактическую ошибку это:
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
, Увидеть:
Вы можете запустить make с помощью --no-builtin-rules
возможность отключить их.
Других решений пока нет …