C++ Makefile не компилирует зависимости / ошибки компоновки?

Надеюсь, это не глупый вопрос. Я новичок в 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.

Я не очень понимаю, как это исправить. Должен ли я менять порядок зависимостей?

Спасибо!

1 ответ

Решение

Учитывая фактическую ошибку это:

 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 возможность отключить их.

Другие вопросы по тегам