Мне потребовалось немного времени, чтобы понять это самостоятельно, только я уже использовал SDL и переходил с C на C ++ на Lion.Здесь проблема не только в make-файле, но и в вашем исходном файле ...
Скачать SDL- версия .tar.gz
Распаковать и запуститьпо приглашению
./configure --prefix=/home/user/SDL && make && make install
Предполагая, что все действительно собрано, теперь вы можете использовать sdl-config для создания вашего источника, выполнив:
g++ Main.cpp -o Main `/home/user/SDL/sdl-config --cflags --libs` \
-framework OpenGL -framework Cocoa
, что совпадает с
g++ Main.cpp -o Main -I/home/user/SDL/include \
-L/home/user/SDL/lib -lSDLmain -lSDL -framework OpenGL -framework Cocoa
Теперь ключевым моментом здесь является то, что вы используете C ++ ... для макросов SDL, чтобы правильно заменить ваш main, вам нужно запретить компилятору C ++ искажать ваш вызов основной функции.Чтобы сделать это, объявите ваш main следующим образом:
extern "C" int main(int argc, char ** argv)
{
}
Если вы не включите extern "C" , C ++ изменит имя вашей основной функции, и SDL победитне сможет автоматически его найти.Если вы не используете int main (int argc, char ** argv) сигнатура функции, C ++ будет жаловаться на несоответствия типов ... так что вы должны сделать это дословно.(При использовании GCC вы исключаете часть extern "C" )
Chenz