SDL aus den Quellen kompilieren ist nicht sehr schwierig und kann unter anderem von Vorteil sein. So kann man sdl-config benutzen und braucht auch nicht mehr die Objective-C-Datei mitzukompilieren.
Die Quellen bekommt man von der SDL-Website und kompiliert sie klassisch („unix-style“) mit den drei Befehlen „./configure“, „make“ und „sudo make install“. Es scheint allerdings bei der aktuellen SDL-Version ein Problem mit Snow Leopard (10.6) zu geben. Laut einem Kommentar auf der SDL-Mailingliste lässt sich dies aber umgehen, indem man mit gcc 4.0 kompiliert, das 10.5 SDK verwendet und i386 als Architektur erzwingt. Da ich noch nicht auf Snow Leopard umgestiegen in, konnte ich es allerdings nicht selbst ausprobieren.
$ mkdir temp $ cd temp $ curl -C - -O 'http://www.libsdl.org/release/SDL-1.2.13.tar.gz' $ tar xzvf SDL-1.2.13.tar.gz $ cd SDL-1.2.13 $ env CC='/usr/bin/gcc-4.0' CFLAGS='-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386' LDFLAGS='-arch i386' ./configure --without-x $ make $ sudo make install $ cd ..
Eine Anwendung kann danach auf dem Terminal so kompiliert werden:
$ g++ -o main main.cpp `sdl-config --cflags --libs`
Die SDL-Erweiterungen kompiliert man auf die selbe Weise, allerdings benötigt man je nachdem noch weitere Bibliotheken. So wird SDL_image ohne JPG, PNG und TIFF Support die entsprechenden Formate nicht lesen können. Im Prinzip ist es immer das Selbe: tar.gz laden, entpacken, ./configure, make, make install. Möglicherweise muss man den ./configure Teil auch anpassen, wenn man dies auf Snow Leopard machen will. Nachfolgenden ist immer das einfache „./configure“ aufgelistet:
$ curl -C - -O 'http://www.ijg.org/files/jpegsrc.v7.tar.gz' $ tar xzvf jpegsrc.v7.tar.gz $ cd jpeg-7/ $ ./configure $ make $ sudo make install $ cd .. $ curl -C - -O 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz' $ tar xzvf libpng-1.2.40.tar.gz $ cd libpng-1.2.40 $ ./configure $ make $ sudo make install $ cd .. $ curl -C - -O http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz $ tar xzvf tiff-3.8.2.tar.gz $ cd tiff-3.8.2 $ ./configure $ make $ sudo make install $ cd .. $ curl -C - -O 'http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.7.tar.gz' $ tar xzvf SDL_image-1.2.7.tar.gz $ cd SDL_image-1.2.7 $ ./configure $ make $ sudo make install $ cd ..
Nun haben wir auch SDL_image installiert. Für SDL_ttf wird zusätzlich FreeType benötigt:
$ curl -C - -O 'http://mirrors.zerg.biz/nongnu/freetype/freetype-2.3.9.tar.gz' $ tar xzvf freetype-2.3.9.tar.gz $ cd freetype-2.3.9 $ ./configure $ make $ sudo make install $ cd .. $ curl -C - -O http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.9.tar.gz $ tar xzvf SDL_ttf-2.0.9.tar.gz $ cd SDL_ttf-2.0.9
Nun SDL_mixer:
$ curl -C - -O 'http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.8.tar.gz' $ tar xzvf SDL_ttf-2.0.9 $ cd SDL_mixer-1.2.8 $ ./configure $ make $ make install $ cd ..
Und zum Schluss noch SDL_net:
$ curl -C - -O 'http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.7.tar.gz' $ tar xzvf SDL_net-1.2.7.tar.gz $ cd SDL_net-1.2.7 $ ./configure $ make $ sudo make install $ cd ..
Beim Kompilieren kann man dann einfach gegen die Bibliotheken linken:
$ g++ -o main main.cpp `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -lSDL_mixer -lSDL_net