Posts Tagged ‘g++

15
Sept
09

SDL kompilieren (Mac OS X)

SDL and Snow Leopard

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
Werbung
14
Aug
09

SDL_image unter OSX einrichten

Für SDL existieren eine Reihe von nützlichen Erweiterungen, welche aber seperat eingerichtet werden müssen. Eine davon ist SDL_image welches das Lesen von verschiedenen Bildformaten erlaubt, unter anderem auch PNG.

Unter Mac OS X muss man dazu das DMG von http://www.libsdl.org/projects/SDL_image/ herunterladen. Darin befindet sich der Ordner SDL_image.framework welchen man einfach nach /Library/Frameworks/ kopiert.

Um einen Quelltext mit g++ zu kompilieren wie in meinem vorherigen Blog-Eintrag beschrieben, muss man die Anweisungen entsprechend um den Pfad zu den Headerdateien (-I/Library/Frameworks/SDL_image.framework/Headers) und die Anweisung zur Nutzung des neuen Frameworks (-framework SDL_image) ergänzen:

$ g++ -I/Library/Frameworks/SDL.framework/Headers -I/Library/Frameworks/SDL_image.framework/Headers -framework SDL -framework SDL_image -framework Cocoa /Library/Frameworks/SDL.framework/devel-lite/SDLMain.m -o main main.cpp

Nutzt man Netbeans sehen, die erzgänzten Additional Options in den Project Properties unter Build->Linker wie folt aus:

-I/Library/Frameworks/SDL.framework/Headers -I/Library/Frameworks/SDL_image.framework/Headers -framework SDL -framework SDL_image -framework Cocoa /Library/Frameworks/SDL.framework/devel-lite/SDLMain.m

Allerdings muss man beachten, dass sich die #include-Anweisung unter Mac OS X etwas unterscheidet.

#include "SDL_image/SDL_image.h"

Um die anderen Erweiterungen einzurichten kann man genauso vorgehen. Man findet sie auf den folgenden Seiten:

11
Aug
09

SDL unter Mac OS X

SDL Logo

Entwickeln mit SDL unter Linux mit C++ ist relativ einfach. Nur kurz über den Paketmanager die Entwicklungs-Bibliotheken installieren und loslegen. Unter Mac OS X kann man jedoch auf Schwierigkeiten stossen, was vorallem für SDL-Neulinge frustrierend sein kann. Deshalb hier eine kurze Anleitung zum Loslegen:

SDL herunterladen und installieren

SDL lässt sich im Downloadbereich der offziellen Website libsdl.org herunterladen. Unter Runtime Libraries findet sich dort für Mac OS X SDL-1.2.13.dmg. Möglicherweise ist inzwischen bereits eine aktuellere Version verfügbar. In der DMG-Datei befinden sich zwei Ordner, SDL.framework und devel-lite. Nun devel-lite einfach in SDL.framework verschieben und diesen Ordner nach /Library/Frameworks/ kopieren. Es gehört vermutlich nicht zur „best practice“ devel-lite in den SDL.framework Ordner zu kopieren, aber dadurch habe ich den Ordner an einem zentralen Ort, was für mich die Entwicklung etwas vereinfacht.

Ein einfaches Beispiel im Terminal erstellen und kompilieren

Nano - test.cpp In einem Terminal erstellen wir mit mkdir an einem passenden Ort einen neuen Ordner und legen darin mit nano eine neue C++ Datei an.

$ mkdir test
$ cd test
$ nano -w test.cpp

In diese Datei schreiben wir folgenden Inhalt:

#include "SDL/SDL.h"

int main(int argc, char* args[]) {
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Quit();

    return 0;
}

Dieses Programm initialisiert SDL und beendet es auch gleich wieder. Im wesentlichen passiert also garnichts. Dennoch wollen wir dieses  Programm verwenden um unsere SDL-Installation zu testen. Nachdem wir die Datei gespeichert und nano beendet haben (Strg+O, Strg+X) verwenden wir folgenden g++-Aufruf um das Programm zu kompilieren:

$ g++ -I/Library/Frameworks/SDL.framework/Headers -framework SDL -framework Cocoa /Library/Frameworks/SDL.framework/devel-lite/SDLMain.m -o test test.cpp

Wir beachten bei diesem Aufruf, wass wir nicht g++ nicht nur den Ort zu den SDL-Header-Dateien angeben und anweisen sowohl das SDL- als auch Cocoa-Framework zu benutzen, sondern auch die Datei SDLMain.m aus dem devel-lite Ordner mitkompilieren. Bei dieser Datei handelt es sich etwas böse gesagt um ein notwendiges Übel bei der Entwicklung mit SDL unter Mac OS X. Solang wir allerdings nicht vergessen diese Datei mitzukompilieren muss uns dies nicht weiter stören. Wenn alles geklappt hat, meldet g++ keinen Fehler und wir finden in unserem Ordner die Anwendung test welche wir über ./test starten können. Damit ist man gerüstet um den verschiedenen Tutorials und Anleitungen im Internet zu folgen.

Einrichten von Netbeans

netbeans

Etwas komfortabler lässt es sich mit einer Entwicklungsumgebung wie zum Beispiel Netbeans arbeiten. Das neueste Netbeans C/C++ Paket kann man über die Downloadseite auf netbeans.org herunterladen oder eine bestehende Netbeans-Installation über den Plug-In-Manager nachrüsten. Die Installation ist selbsterklärend. Hat man ein neues Projekt erstellt muss man Netbeans anweisen den g++-Aufruf entsprechend zu ergänzen.

Netbeans - Project Properties

Nach einem Rechtsklick auf sein Projekt wählt man dazu aus dem Kontextmenü Properties und dann unter Categories Linker aus. Bei Additional Options gibt man folgenden Wert ein:

-I/Library/Frameworks/SDL.framework/Headers /Library/Frameworks/SDL.framework/devel-lite/SDLMain.m -framework SDL -framework Cocoa

Um zu testen ob alles geklappt hat, kann man das weiter oben beschriebene Programm verwenden.




Mai 2023
M D M D F S S
1234567
891011121314
15161718192021
22232425262728
293031