Anmelden Registrieren

Badges

Follow Peter Bouda on Google Plus

Feeds

Neueste BlogeinträgeBlog

Wie man mit MADDE ein Qt-Projekt für Maemo erstellt

Bearbeitet am Dienstag, 23. März 2010, 10:50 Uhr von pbouda

Nachdem ich in einem Artikel schon gezeigt habe, wie sich mit Scratchbox ein Qt-Projekt für Maemo erstellen lässt, folgt hier nun die MADDE-Version des Ganzen. MADDE steht für “Maemo Application Development and Debugging Environment” und erlaubt euch die Erstellung von Qt-Projekten für mobile Endgeräte, das Starten und Debuggen auf dem Endgerät (derzeit: dem N900), sowie die Erstellung des fertigen .deb-Pakets zur Installation für den Endanwender. Also Vorbereitung sollte auf eurem Entwicklungsrechner schon einmal MADDE installiert und lauffähig sein. Prinzipiell ist diese Tutorial unter Linux, Windows und auf dem Mac anwendbar, ich beziehe mich hier aber immer auf die Linux-Variante von MADDE.

Projektstruktur

Im ersten Schritt erstellen wir mit MADDE ein Projektgerüst für die Qt-Anwendung. Dazu reicht ein Befehl auf der Kommandozeile:

mad pscreate -t qt_simple mobileqt

Dieser Befehl legt eine komplette Projektstruktur (per Template “qt_simple”) im Ordner “mobileqt” an. Um eine Liste aller verfügbaren Templates auszugeben gibt es den Befehl:

mad pscreate -l

“mad” ist sozusagen die Hauptanwendung in MADDE, über sie erreicht ihr alle nötigen Befehle für die Projektverwaltung. Die Projektstruktur eures Projekts sollte jetzt folgendermaßen ausschauen:

Der Ordner “data” enthält eine .desktop-Datei und zwei Icons, damit ihr die Anwendung später über das Anwendungsmenü auf dem Gerät starten könnt. Im “src”-Ordner liegt eine eure Hautanwendungsdatei “qtmain.cpp”, der “uis”-Ordner ist leer und kann später für die .ui-Dateien für die Oberfläche der Anwendung verwendet werden. Der “debian”-Ordner enthält die Dateien zur Erstellung des .deb-Pakets, dabei sind vor allem folgende Dateien für euch interessant:

  • changelog: Für spätere Versionen muss das changelog jeweils erweitert werden, und zwar über den Befehl “debchange”. Genaueres dazu gibt es hier.
  • control: Hier solltet ihr noch eine Projektbeschreibung eintragen. In der Zeile “Maintainer:” sollte euer Name und E-Mail-Adresse stehen. Das Feld “XB-Maemo-Icon-26:” git ein Icon für den Programmmanager auf dem N900 an. Wenn ihr diese Felder leer lasst, dann wird kein Icon verwendet. Das Icon muss die Größe 48×48 haben. Wie ihr den Icon-Code für die “control”-Datei erstellt, könnt ihr hier nachlesen. Wenn ihr kein Icon braucht dann könnt ihr das entsprechende Feld einfach aus “control” entfernen. Dieses Icon ist wie gesagt nur für den Programmmanager. Das Anwendungsicon für den Desktop wird separat aus dem “data”-Verzeichnis installiert.
  • copyright: Hier müsst hier halt euren Namen und die entsprechenden Copyright-Informationen eintragen.

Eine genauere Beschreibung der einzelnen Dateien findet ihr beispielsweise hier.

Anwendung entwickeln und starten

Im zweiten Schritt könnt ihr jetzt eure Qt-Anwendung im Ordner “src” programmieren. Im Prinzip könnt ihr eure Quelltexte mit jedem beliebigen Editor oder IDE erstellen, am Besten geht es aber mit dem Qt Creator. Das Problem: derzeit lassen sich MADDE-Anwendungen nur mit einem akutellen Schnappschuss des Qt Creator entwickeln, die offizielle Download-Version wird nicht funktionieren. Ich benutze derzeit die Version 1.3.81 vom 9.3.2010. Die neuesten Schnappschüsse des Qt Creator könnt ihr jeweils hier herunterladen. Ihr startet also eine solchen Qt Creator und öffnet das Projekt “qtprog.pro” in eurem Projektordner:

Wir fügen nun der Anwendung ein Hauptfenster hinzu. Dazu klickt ihr im Projektbaum mit der rechten Maustaste auf “qtprog” und im erscheinenden Kontextmenü auf “Hinzufügen”:

Im nächsten Schritt wählt ihr als neue Datei eine “Qt Designer-Formular-Klasse”:

Dann als Vorlage ein “Main Window”:

Im nächsten Schritt solltet ihr lediglich als Pfad entweder euren “uis”- oder “src”-Ordner angeben, ich wähle hier den “uis”-Ordner:

Ihr habt somit dem Projekt ein Hauptfenster hinzugefügt. Wenn ihr das Projekt nun per “Play”-Button ausführt, wird dieses aber noch nicht angezeigt. Dazu muss das Fenster von eurer “qtmain.cpp” geladen werden. Öffnet also die Datei “qtmain.cpp” im Qt Creator und ersetzt am Besten die gesamte “main”-Funktion mit folgendem Code:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow w;
    w.show();
    return app.exec();
}

Für die Klasse “MainWindow” muss ausserdem der Header “uis/mainwindow.h” geladen werden, fügt also auch noch folgenden include-Befehl in die Datei “qtmain.cpp” ein:

#include "uis/mainwindow.h"

Damit könnt ihr eure Anwendung nun starten, und ihr seht ein leeres Hauptfenster. Wenn ihr die Anwendung mit dem Qt Creator weiter entwickelt, könnt ihr die Anwendung im Weiteren auch direkt auf dem N900 ausführen und debuggen. Dazu müsst ihr nur MADDE in den Qt Creator integrieren, dazu gibt es hier einen eigenen Artikel.

Paketerstellung

Im dritten Schritt erzeugen wir nun schon das .deb-Paket für die Installation auf dem N900. Dazu reicht nun auf der Kommandozeile im Projektverzeichnis der Befehl “mad dpkg-buildpackage”:

peter@peter-arbeit:~/Projects$ cd mobileqt/
peter@peter-arbeit:~/Projects/mobileqt$ mad dpkg-buildpackage
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value: 
dpkg-buildpackage: set LDFLAGS to default value: 
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package mobileqt
dpkg-buildpackage: source version 0.1
dpkg-buildpackage: source changed by Peter Bouda <peter@unknown>
dpkg-buildpackage: host architecture armel
 . . . hier kommen viele Zeilen ...
 dpkg-genchanges  >../mobileqt_0.1_armel.changes
dpkg-genchanges: including full source code in upload
dpkg-buildpackage: full upload; Debian-native package (full source is included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

Das Paket wurde in den Ordner “über” dem Projekteordner gelegt, bei mir also “../mobileqt_0.1-1_armel.deb”. Diese Datei könnt ihr wie gewohnt auf das N900 kopieren und per “dpkg” installieren. Wie das geht habe ich im Scratchbox-Tutorial in Schritt 7 ausführlich beschrieben. Auf dem N900 sollte nach Start der Anwendung ein leeres Hauptfenster erscheinen.

Fazit

Soweit also zur MADDE-Variante der mobilen Qt-Entwicklung. MADDE wird wohl in Zukunft die Scratchbox-Fummelei für die Qt-Entwicklung ablösen. Derzeit sind bestimmte Pakete wie Phonon noch nicht in MADDE enthalten, dafür muss also weiterhin Scratchbox bemüht werden. Der größte Vorteil von MADDE ist aber wohl die einfache Installation, die Integration der Debian-Paket-Erstellung und die Integration mit dem Qt Creator. Für jeden Qt-Entwickler somit eine große Erleichterung.