Я пытаюсь скомпилировать тетрис программу, которую я написал с C ++ и SDL на OS X. Сначала я попытался сделать это:
`g++ -o tetris main.cpp `sdl-config --cflags --libs` -framework Cocoa`
и получил это:
Undefined symbols:
"Game::startGame()", referenced from:
_main in ccQMhbGx.o
"Game::Game()", referenced from:
_main in ccQMhbGx.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Вот файл main.cpp:
#include <iostream>
#include "Game.h"
int main(int argc, char* argv[]) {
Game *game = new Game();
game->startGame();
return 0;
}
Game.h
- это класс игры, в который включены все остальные классы (Board.h, IO.h, Piece.h, Pieces.h) и содержится основная логика игры.
Мне бы очень хотелось написать для этого make-файл или найти способ легко разослать его друзьям.
EDIT:
вот последний make-файл на тот случай, если у кого-то возникнет такая же проблема:
CC=g++
CFLAGS=-c -Wall
SDLFLAGS=`sdl-config --cflags --libs` -framework Cocoa
SOURCES=main.cpp Game.cpp IO.cpp Board.cpp Pieces.cpp Piece.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=tetris
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(OBJECTS) $(SDLFLAGS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -rf *.o $(EXECUTABLE)