Sie sind hier

AFUTrainer 3.0 unter Mac OS X kompilieren

Das Open-Source-Programm AFUTrainer ist eine gute Hilfe beim Lernen für die Amateurfunk-Prüfung. Leider gibt es auf der Download-Seite keine ausführbare Datei für Mac OS X.

Da die Installation bei mir etwas fummelig war, hier eine Kurzanleitung:

Benötigte Teile

Zum Selbstkompilieren muss man zunächst den Quellcode von der AFU-Trainer-Homepage herunterladen und entpacken.

Zusätzlich braucht man ein QT-SDK für OSX und die zlib-Bibliothek zum Entpacken von ZIP-Archiven. Last but not least müssen natürlich die Develloper-Tools von der OSX-DVD installiert sein.

Patchen

Meine Version aus den Original-Quellen ist beim Laden der Fragenkataloge in Folge eines ungültigen Indizes abgestürzt. Ich habe den Quellcode daher an einer Stelle verändert.

Dazu ist in der Datei catalogmodel.cpp in der Zeile 168 der fettgedruckte Teil zu ergänzen:

if (parent.isValid() || row < 0 || row >= m_listChapter.size()) return QModelIndex();

Damit werden negative Zeilen herausgefiltert und führen nicht länger zum Absturz der Software.

Ich habe den Autor des AFUTrainers, Oliver Saal, über den Fehler informiert. Ich gehe daher davon aus, dass das Problem mit der nächsten Version behoben und dieser Patch nicht mehr notwendig sein wird.

Kompilieren

Zunächst das QT-SDK installieren.

Im entpackten AFUTrainer-Quellcodeverzeichnis gibt es einen Ordner zlib. Dieser enthält leider nur eine Windows-Bibliothek, hilft also unter OSX nicht wirklich weiter. Diesen Ordner daher löschen und durch den zlib-x.x.x-Ordner aus den eben heruntergeladenen zlib-Quellen ersetzen. (Den zlib-x.x.x-Ordner dazu in zlib umbenennen!)

In der Komandozeile in das zlib-Verzeichnis wechseln und ./configure aufrufen. Ich glaube, ich habe dabei auch den Parameter --static angegeben.

Das configure-Skript erstellt ein Makefile, das man nun im Editor öffnet. Die Zeile "CFLAGS=-O3" in "CFLAGS=-O3 -m32" ändern. Dies ist notwendig, da die Bibliothek standardmäßig als 64-Bit-Version kompiliert wird, was dazu führt, dass sie nicht zum restlichen Code gelinkt werden kann. Das "-m32"-Flag erzwingt die Erstellung einer 32-Bit-Version.

Die Bibliothek anschließend mit "make" übersetzen.

Nun eine Verzeichnisebene höher wechseln (zurück das AFUTrainer-Quellcodeverzeichnis) und mittels "qmake" eine Projektdatei für XCode erstellen. Die dabei erscheinende Warnung über "qt" kann ignoriert werden. Mit Doppelklick auf "afutrainer.xcodeproj" im Finder sollte XCode starten und das Projekt laden.

Die Projekteinstellungen oben links von "Debug" auf "Release" umstellen.

Nun unter Project->Edit Active Target "afutrainer" zum Abschnitt "Linking" runterscrollen und das Feld "Other Linker Flags" suchen. Dort müssen die zusätzlichen Flags "-lz" und "-Lzlib" ergänzt werden. Ersteres Flag linkt die libz hinzu, letzteres erklärt dem Compiler, dass besagt Bibliothek im Unterverzeichnis "zlib" zu finden ist.

Damit sollte sich das Projekt durch Klicken auf "Build" erstellen lassen. Die ausführbare Datei befindet sich danach unter build/Release und kann von dort in den Programmordner verschoben werden.

Wer es probiert hat, möge mal einen Kommentar hier hinterlassen. Da ich die Anleitung nur grob aus dem Gedächtnis geschrieben habe, mag ich vielleicht das eine oder andere Detail noch vergessen haben.

Tipps zum Handling

Der unter Mac OS X selbstkompilierte Source-Code läuft so grundsätzlich, einige GUI-Elemente werden bei mir allerdings nicht richtig dargestellt. Das sind allerdings nur Schönheitsfehler, ich habe die Prüfung auch so bestanden. :)

  • Man kann den Lernfortschritt auch auf einen anderen Computer übernehmen, in dem man die Dateien aus dem versteckten ".afutrainer"-Verzeichnis rüberkopiert (unter allen Betriebssystemen direkt im Benutzerverzeichnis zu finden).
     
  • Wenn die Schriftgröße der Fragen so winzig ist, dass sie kaum zu lesen ist, kann man sie vergrößern, in dem man mit der Maus über die Textbox geht, die ALT-Taste (oder war es STRG oder CMD? jedenfalls eine der drei) gedrückt hält und am Mausrad dreht. Wenn man die richtige Taste drückt, wird dabei nicht der komplette Bildschirm gezoomt, sondern ausschließlich das Textfeld.
     
  • Zur Eingabe der Antworten bieten sich die Hotkeys "a" - "d" an, das spart so manchen Mauskilometer.