Contents |
Languages: عربي | Asturianu | Català | Česky | Kaszëbsczi | Dansk | Deutsch | English | Esperanto | Español | Eesti | فارسی | Suomi | Français | Galego | Italiano | 日本語 | 한국어 | Norwegian | Polski | Português Brasileiro | Română | Русский | Svenska | Slovenčina | Slovenščina | српски | Türkçe | Tiếng Việt | Українська | 简体中文 | 繁體中文
| Tutorial Series | Getting Started |
| Previous | Build KDE 4 |
| What's Next | Other development topics |
| Further Reading | n/a |
| Note |
|---|
| Diese Seite setzt voraus, dass Sie bereits kdelibs, kdepimlibs und kdebase anhander der Anleitung unter Getting Started/Build/KDE4 erstellt haben |
Um mit der Entwicklung für KDE 4 zu beginnen, gibt es folgende drei Möglichkeiten:
Alle drei Optionen werden nachfolgend beschrieben.
| Note |
|---|
Wenn Sie beim ausführen von KDE 4 Anwendungen Fehler wie den folgenden erhalten:
Qt: Session management error: Could not open network socket QMutex::lock: Deadlock detected in thread -1241241936Oder wenn Sie startkde ausführen und es hängenbleibt, lesen Sie this article für einen möglichen Ausweg. |
Für diese Methode wird das Tool sux (http://fgouget.free.fr/sux/sux-readme.shtml) benötigt. sux ist in den meisten Distributionen bereits enthalten. Anderenfalls können Sie auf die unten beschriebene Methode Normale Shell ohne sux zurückgreifen. sux erlaubt Ihnen, zu einem anderen Nutzer zu wechseln und konfiguriert dabei automatisch das X Forwarding (Authentifizierung und Export der DISPLAY Variable).
Um sich anzumelden, geben Sie sux - kde-devel ein.
Alle Umgebungsvariablen und alles sonstige sollten korrekt von Ihrer .bashrc
gesetzt werden. Um eine Applikation zu starten, geben Sie einfach ihren Namen ein; zum Beispiel: kwrite
| Note |
|---|
Wenn Sie Fehlermeldungen über fehlende MIME-Typen oder ähnliches erhalten, versuchen Sie folgendes:
|
Die einfachste Methode um KDE 4 Anwendungen zu starten, ist es su zur Anmeldung als kde-devel Benutzer zu benutzen und dann einfach die gewünschten KDE 4 Anwendung von der Shell aufzurufen. Um sich anzumelden, geben Sie su - kde-devel
ein und nachdem Sie Ihr Passwort eingegeben haben führen Sie
export DISPLAY=:0 aus.
| Note |
|---|
| Das Exportieren der DISPLAY Variable ist nötig, damit die KDE 4 Anwendungen auf Ihrem normalen KDE 3 Desktop erscheinen. |
Alle Umgebungsvariablen und alles sonstige sollte bereits von Ihrer .bashrc korrekt gesetzt worden sein. Um eine Anwendung zu starten, geben sie einfach ihren namen ein; zum Beispiel: kwrite
| Note |
|---|
Wenn Sie Fehlermeldungen über fehlende MIME-Typen oder ähnliches erhalten, versuchen Sie folgendes:
|
Der einfachste Weg um eine KDE 4 Anwendung über SSH auf Ihrem aktuellen Desktop auszuführen, ist es auf folgendem Weg eine Shell mit X-Forwarding zu bekommen:
ssh -X kde-devel@localhost
Jetzt können Sie KDE Anwendungen wie gewöhnlich ausführen, zum Beispiel:
kwrite
Diese zwei Zeilen können auf einfache Weise kombiniert werden:
ssh -X kde-devel@localhost kwrite
| Note |
|---|
| Falls Sie Fehlermeldungen erhalten, probieren Sie die Tips aus dem vorhergehenden Abschnitt aus. |
Bevor Sie vorherige Methode sinnvoll benutzen können, müssen Sie eine Anmeldung ohne Passwort einrichten. Dafür führen Sie folgenden Befehl unter Ihrem normalen Benutzeraccount aus:
ssh-keygen -t rsa
Drücken Sie drei mal RETURN um den Pfad ~/.ssh/id_rsa zu akzeptieren und ein leeres Passwort zu vergeben. Anschliessen kopieren Sie die einzelne Zeile aus ~/.ssh/id_rsa.pub die Ihnen die Ausgabe von
cat ~/.ssh/id_rsa.pub liefert, in die Zwischenablage.
Wechseln Sie nun mit ssh zurück zum kde-devel Benutzer öffnen Sie die Datei $HOME/.ssh/authorized_keys auf folgende Weise:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \ $HOME/.ssh/authorized_keys
Fügen Sie dort die zuvor kopierte Zeile ein, speichern Sie die Datei und beenden Sie KWrite. Versuchen Sie nun nochmal KWrite mit dem gleichen SSH-Befehl auszuführen; Sie sollten nun kein Passwort mehr benötigen:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite
| Warning |
|---|
Das Anmelden per SSH ohne Passwort birgt gewisse Sicherheitsrisiken. Vergewissern Sie sich deshalb, dass Ihre ~/.ssh/id_rsa Datei geschützt ist, indem Sie den Zugriff auf sie mit
chmod og-xrw ~/.ssh/id_rsa einschränken (Die Datei sollte diese Rechte eigentlich bereits bei der Erstellung erhalten haben) |
Wenn Sie Anwendungen einfacher benutzen wollen, als Sie per SSH-Befehl von der Shell zu starten, besteht ein Weg darin, .desktop Dateien zu erstellen die automatisch per ssh zum anderen Benutzer wechseln.
| Note |
|---|
| Dies ist nur dann nützlich, wenn Ihre Desktop-Umgebung .desktop Dateien unterstützt. Immerhin KDE und GNOME tuen dies. |
Sie können eine existierenden .desktop Datei als Vorlage verwenden (Etwa eine von Ihrem Desktop) oder eine neue erstellen. Die Idee dahinter ist, dem auszuführenden Kommando die SSH-Verbindung auf folgende Weise voranzustellen:
ssh -X kde-devel@localhost $HOME/kde/bin/
Eine einfache .desktop Datei die KWrite ausführt würde folgenden Inhalt haben:
[Desktop Entry]
Categories=Qt;KDE;TextEditor;
Comment=
DocPath=kwrite/index.html
Encoding=UTF-8
Exec=ssh -X kde-devel@localhost /home/kde-devel/kde/bin/kwrite %U
GenericName=Text Editor
Icon=kwrite
InitialPreference=8
MimeType=text/plain
Name=KWrite (kde-devel)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-StartupType=Multi
X-DCOP-ServiceType=non
X-KDE-StartupNotify=true
X-KDE-SubstituteUID=false
X-KDE-Username=
| Tip |
|---|
| Anwendung, die wie hier über SSH gestartet werden, lösen nicht die korrekten Startereignisse aus, so dass Sie besser die "Startrückmeldung" für Ihre .desktop Dateien deaktivieren sollten. |
| Note |
|---|
| Um auf diese Weise eine .desktop-Datei für KDE 4 Anwendungen zu erstellen, muss das Paket der Anwendung mit cmakekde in ~/kde/bin installiert worden sein. |
Anstatt für die Software-Entwicklung einen vollständigen virtuellen X-Server zu benutzen, können Sie Xephyr zur Einbettung Ihrer KDE 4 Sitzung in Ihr KDE 3 oder eine andere X11-Umgebung verwenden.
Sie können dies auch mit xnest erreichen aber da xnest nicht mit Erweiterungen wie Render umgehen kann, bevorzugen viele Leute Xephyr.
Wenn Sie eine minimale KDE Sitzung verwenden wollen, führen Sie einfach Xephyr aus: (in Kubuntu als xserver-xephyr verfügbar; Gentoo Benutzer kompilieren x11-base/xorg-server mit USE="kdrive"):
Xephyr :1&
Sie können KDE nun ausführen:
export DISPLAY=:1 /path/to/kde4/bin/startkde-modified &
startkde-modified ist eine Kopie des startkde-Skripts welches die folgenden Zeilen am Anfang enthält:
export KDEDIR=`kde4-config --prefix`
export LD_LIBRARY_PATH=$KDEDIR/lib
export PATH=$KDEDIR/bin/:$PATH
export KDEHOME=~/.kde4
Sie können Xephyr auch mit KDM über das Xdmcp Protokoll benutzen und einfach eine neue KDE 4 Sitzung zu KDM hinzufügen.
Unter Kubuntu können Sie das erreichen indem Sie
[Xdmcp]
Enable=false
in /etc/kde3/kdm/kdmrc zu
[Xdmcp]
Enable=true
verändern und Ihre /etc/kde3/kdm/Xaccess anpassen um ihrem lokalen System Zugriff zu gewähren. Zusätzlich sollten Sie eine Blockierende Regel für alle Ihre externen Schnittstellen für den Xdmcp Port einrichten falls Sie dies auf einem Laptop oder einem PC in einer unsicheren Umgebung verwenden.
Wenn Sie soweit sind, führen Sie einfach Xephyr aus:
Xephyr -query localhost :1 -host-cursor -screen 1024x768&
wobei -host-cursor versucht den Cursor des Hosts zu benutzen und -screen die Auflösung des Bildschirms festlegt.
Hinweis: Wenn Sie viele Fehlermeldungen bezüglich abgewiesener Verbindungen erhalten, sollten Sie die Option -ac an Xephyr übergeben:
Xephyr -ac :1&
Eine andere Möglichkeit die Sie versuchen können, wenn Sie diese Meldungen erhalten, ist es dem kde-devel Benutzer Zugriff auf den X-Server zu geben. Als root oder mit sudo führen Sie dazu folgenden Befehl aus:
xhost +local:kde-devel
Falls Ihnen Xephyr nicht zur Verfügung steht, können Sie auch Xnest benutzen:
Xnest -ac :1& export DISPLAY=:1
| This section needs improvements: Please help us to
cleanup confusing sections and fix sections which contain a todo |
I use this for my start script nested_kde4.sh:
#! /bin/bash
NESTED_KDE_DISPLAY_BACKUP=$DISPLAY
export DISPLAY=:0
Xephyr :1 -screen 1024x768 &
export DISPLAY=:1
$HOME/kde/bin/startkde-modified &
export DISPLAY=${NESTED_KDE_DISPLAY_BACKUP}
Falls Sie folgende Fehlermeldung erhalten:
"Call to lnusertemp failed (temporary directories full?). Check your installation."
versuchen Sie folgendes:
mkdir /var/tmp/kde-devel-kde4
Der obige Code setzt voraus das sie als Benutzer kde-devel arbeiten.
Um eine eigenständige KDE 4 Sitzung auszuführen, können Sie sie entweder, wie gewöhnlich, auf folgende Weise von der Kommandozeile starten:
X :1 & export DISPLAY=:1 startkde
| Note |
|---|
| Wenn der X-Server die Verbindung verweigert und dabei folgendes ausgibt: Xlib: connection to ":1.0" refused by server, versuchen Sie X -ac :1 stattdessen. |
oder Sie können KDE 4 zu Ihrem Login Manager hinzufügen. Wenn Sie KDM (oder einen kompatiblen Login Manager) benutzen, wird dies durch Erstellen einer .desktop Datei in entweder `kde-config --prefix`/share/apps/kdm/sessions/ oder in /usr/share/xsessions/ erreicht. Der einfachste Weg führt dabei über das kopieren einer existierenden kde.desktop-Datei nach kde4.desktop. Öffnen Sie diese neue .desktop-Datei in einem Texteditor und ändern Sie die Einträge zu Exec, TryExec und Name auf folgende Weise:
Exec=$HOME/kde/bin/startkde
TryExec=$HOME/kde/bin/startkde
Name=KDE4
Ersetzen Sie $HOME/kde in obigem Beispiel mit dem Pfad unter dem Sie KDE 4 installiert haben.
Nach dem Neustart des Login Managers (Alt+e in KDM) sollte dieser neue Eintrag im Sitzungs-Menu erscheinen.
| Note |
|---|
| Sie sollten den Pfad zum 'qdbus' Programm (normalerweise ist dies $QTDIR/bin) in Ihrer $PATH Variable haben um sich erfolgreich anzumelden. Falls es dort nicht ist, werden Sie eine Fehlermeldung "Could not start DBus. Check your installation." erhalten. |
Dieser Abschnitt wird Ihnen erklären, wie sie KDevelop 3.4 benutzen um KDE 4 Anwendungen zu entwickeln. Wenn sie Fragen, Korrekturen oder Bedenken zu diesem Abschnitt haben, notieren Sie diese bitte auf der Diskussions-Seite.
Sie benötigen hierfür mindestens KDevelop 3.4, das immernoch eine KDE 3 Anwendung ist. Versionen vor 3.4 haben unter anderem keine Qt 4 Unterstützung. Die KDE 4 Version von KDevelop ist für den produktiven Einsatz noch nicht geeignet. Sie erhalten KDevelop auf der KDevelop Homepage. Installieren Sie KDevelop wie alle anderen KDE 3 Anwendungen unter Ihrem normalen Benutzer und nicht mit Ihrem kde-devel Benutzer.
Sie benötigen ausserdem die neueste GDB Version. Die aktuelle ist 6.6.0.
Weiterhin müssen Sie die kdelibs API Dokumentation lokal vorliegend haben, was unter Anleitung zum Erstellen beschrieben wird.
Ausserdem benötigen Sie noch ctags, htdig, htmerge und htsearch. valgrind und callgrind könnten auch nützlich sein.
Stellen Sie sicher, das sie den Schritten unter KDE 4 Anleitung zum Erstellen befolgt und eine funktionierende KDE 4 Umgebung erstellt haben. Prüfen Sie, ob sich einfache KDE 4 Anwendungen wie Konsole oder KWrite von der Kommandozeile des kde-devel Benutzers ohne Probleme starten lassen.
Die folgenden Schritte werden alle mit dem kde-devel Benutzer ausgeführt. Sie müssen sich mit su - kde-devel unter diesem Benutzer anmelden.
KDevelop hat keine native Unterstützung für CMake Projekte. Glücklicherweise hat CMake die Fähigkeit selbst KDevelop Projekt Dateien zu erstellen. Um dies zu erreichen, müssen Sie CMake den Parameter -GKDevelop3 übergeben. Dies bewegt CMake dazu, Projektdateien für KDevelop neben den normalen Makefiles zu erstellen. Der beste Weg dazu ist es, die cmakekde Funktion in Ihrer .bashrc anzupassen. Ändern Sie einfach
cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
in
cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
Nachdem Sie das getan haben, melden Sie sich erneut an, damit sich die Veränderungen an der .bashrc Datei auswirken. Dann müssen Sie cmakekde erneut im (Wurzel) build Verzeichnis des Projekts an dem Sie mit KDevelop arbeiten wollen (wenn sie vorher nicht -GKDevelop3 im Erstellungsschritt ausgeführt haben). Wenn Sie zum Beispiel an Konsole, welches in kdebase liegt, arbeiten möchten, müssen Sie cmakekde im $KDE_BUILD/KDE/kdebase Verzeichnis ausführen. Dies erstellt unglücklicherweise alles erneut, aber nur einmal wenn Sie den Generator ändern.
Da alle Umgebungsvariablen des kde-devel Benutzers KDE 4 spezifisch sind, müssen diese zurückgesetzt werden, um der KDE 3 Umgebung zu entsprechen bevor KDevelop gestartet wird. Am einfachsten wird dies erreicht, indem Sie folgende Funktion zu Ihrer .bashrc hinzufügen:
function start3app {
mkdir -p /tmp/$USER-kde export PATH=/opt/kde3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games export LD_LIBRARY_PATH= export KDETMP=/tmp/$USER-kde export KDEVARTMP=/var/tmp/$USER-kde export KDEHOME=$HOME/.kde export KDEDIR=/usr export KDEDIRS=$KDEDIR export DISPLAY=:0 eval "$@" source $HOME/.bashrc #Reset environment variables again
}
Die PATH und LD_LIBRARY_PATH Variable werden vom KDE 3 Benutzer übernommen, und sie könnten auf Ihrem System abweichen, Geben Sie echo $PATH und echo $LD_LIBRARY_PATH als normaler KDE 3 Benutzer ein, um diese Werte zu erhalten. Die obigen Funktion nimmt an, das KDE 3 im /usr Verzeichnis installiert ist, wie es unter Debian-Systemen der Fall ist. Falls Ihr KDE 3 in einem anderen Verzeichnis installiert ist, müssen Sie die Zeile die KDEDIR setzt entsprechend anpassen. Hier ist ein Beispiel, wie sie herausfinden unter welchem Verzeichnis KDE installiert ist; in diesem Beispiel ist es /opt/kde3:
kde-config --prefix
/opt/kde3
Jetzt sollten Sie KDevelop starten können, indem Sie start3app kdevelop eingeben. Machen sie dies jetzt.
| Tip |
|---|
| Sie können jede KDE 3 Anwendung mit der start3app Funktion starten. Nützlich ist das zum Beispiele für Kompare und kdesvn. Sie können jedoch auf diesem Weg nicht KDbg starten umd KDE 4 Anwendungen zu debuggen, da sonst die die Umgebungsvariablen für die debuggte Anwendung falsch sind. |
Symptom: kdevelop meldet "cannot talk to klauncher". Sie können keine Datei öffnen.
Lösung: fügen Sie Ihren KDE Bibliotheks-Pfad zum LD_LIBRARY_PATH hinzu, e.g.:
export LD_LIBRARY_PATH=/opt/kde3/lib
Jetzt, da KDevelop gestartet ist, müssen Sie einige Einstellung vornehmen. Gehen Sie dafür nach Einstellungen->KDevelop einrichten...->Dokumentation. Entfernen Sie alle Einträge die für KDE 4 nicht relevant sind.
{{note| Obwohl Umgebungsvariablen wie $HOME in diesem Abschnitt verwendet werden, sollten Sie diese mit echten Pfaden ersetzen, da KDevelop keine Umgebungsvariablen auflöst.}
Optional können Sie die kdelibs API Dokumentation hinzufügen. Sie müssen sie zuvor erstellen. Dann fügen sie die Dokumentation durch Klick auf Hinzufügen... hinzu. In diesem Dialog verwenden Sie folgende Einstellungen:
Fügen Sie nun die Qt API Dokumentation hinzu, indem Sie folgende Einstellungen verwenden:
Nachdem Sie die Dokumentation für kdelibs und die Qt API hinzugefügt haben, stellen sie sicher das alle Checkboxen (TOC,Index und Suche) aktiviert sind. Dann gehen Sie auf den Tab Volltextsuche und stellen sicherm das die Pfade zu den Programmen htdig, htmerge und htsearch korrekt sind. Sie können den Einstellungs-Dialog nun schliessen.
Jetzt ist es an der Zeit das Projekt an dem Sie arbeiten möchten zu öffen indem sie auf Projekt->Projekt öffnen klicken. Die Projektdateien befinden sich im build-Verzeichnis. Für Konsole müssen Sie zum Beispiel die Datei $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop öffnen. Sie müssen nun einige Projektspezifische Einstellungen unter Projekt->Projekt Optionen vornehmen. Sie müssen das für jedes Projekt machen, an dem Sie arbeiten möchten.
| Note |
|---|
| Manchmal ist keine KDevelop Projektdatei für das Verzeichnis in dem Sie arbeiten möchten verfügbar.
Dies kann verschieden Gründe haben, es hängt davon ab wie die CMake-Dateien geschrieben wurden. Für gewöhnlich sollten CMake-Dateien, die eine project(projectname) Anweisung enthalten gut funktionieren. Wenn Sie mit CMake vertraut genug sind, können Sie versuchen, diese Anweisung hinzuzufügen. Ein Workaround dafür ist es, einfach die KDevelop Projektdatei eines darüberliegenden Ordners zu verwenden. In diesem Fall müssen Sie den Make Active Directory Eintrag im Kontextmenu des File Selectors in der Sidebar benutzen. Damit können Sie die anderen, unerwünschten Verzeichnisse beim erstellen und installieren ignorieren. |
| Note |
|---|
| Der Qt4 PCS Importer wird nur benötigt wenn Qt4 nicht installiert wurde, sie es also zum Beispiel direkt aus dem build-Verzeichnis heraus nutzen. Der Nachteil ber der Benutzung des Qt4 Importers ist das er während des Imports keinen Fortschritt anzeigt und die Applikation zu hängen scheint. Die Alternative ist es den Custom Directory PCS Importer dafür zu benutzen |
| Name | Value |
|---|---|
| KDEHOME | $HOME/.kde4 |
| PATH | $KDEDIR/bin:$QTDIR/bin:/usr/local/bin:$PATH |
| LD_LIBRARY_PATH | $KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH |
| KDETMP | /tmp/$USER-kde4 |
| KDEVARTMP | /var/tmp/$USER-kde4 |
| KDEDIR | $HOME/kde |
| KDEDIRS | $KDEDIR |
| LD_BIND_NOW | 42 |
Jetzt sind Sie damit fertig Ihre Projekt-spezifischen Einstellungen zu konfigurieren. Sie sollten nun unter Einstellungen->Plugins konfigurieren... einige Plugins entfernen, die Sie nicht benötigen. Ich deaktiviere beispielsweise folgende Plugins:
Abbreviation Expansion, Code Snippets, Doxygen Support, Embedded Konsole, File Tree, Final Packaging Support, "Open with" Menu Addon, QuickOpen, Regular Expression Tester, Scripting, Security Checker, Shell Filtering and Insertion, Text Structure and Tools Menu Addition.
Sie sollten zumindest die Fettgedruckten entfernen.
Jetzt öffnen Sie, falls noch nicht geschehen, irgendeine Quelldatei. Dies aktiviert den Menueintrag Einstellungen->Editor konfigurieren..., wo Sie die Tabulatoroptionen so einstellen müssen wie Sie im Projekt an dem Sie arbeiten benutzt werden. Die wichtigsten Einstellungen sind:
Im Hauptfenster klicken Sie auf den Tab CTags in der unteren Tableiset, dann klicken Sie auf Neu erstellen um eine CTags-Datenbank zur einfacheren Navigation im Quellcode zu erstellen.
Jetzt haben Sie alle wesentlichen Einstellunge vorgenommen, Gratulation!
Wenden Sie sich an das KDevelop Handbuch (englisch) um generell Hilfe zu Ihrer Arbeit mit KDevelop zu erhalten. Der folgende Abschnitt wird nur Spezialfälle im Bezug auf KDE 4 enthalten.
KDE Anwendungen haben viele Symbole, was bedeutet, dass sie viel Speicher benötigen um eine angemessene Ladezeit beim Debuggen zu erreichen. Um einen GDB Entwickler zu zitieren: " KDE apps have many symbols, which means that you need a lot of memory to get a decent loading times for debugging. To quote a GDB developer: "Ich würde mich weigern KDE auf etwas mit unter 1 GB RAM zu debuggen." Wenn die Schrittfunktion des Debuggers zu langsam für Sie ist, versuchen Sie folgende Tips:
| Note |
|---|
| KDevelop unterstützt bisher keine Änderungen am CMake build System. Das bedeutet, das Sie KDevelop nicht dazu benutzen können, Dateien zum Projekt hinzuzufügen oder zu entfernen oder irgend einen anderen Aspekt des Buildprozesses Ihres Projekts zu modifizieren. Sie müssen stattdessen die CMake Dateien per Hand anpassen und dann erneut cmakekde ausführen. Lesen Sie das CMake Tutorial um zu lernen wie man das macht. |
| Tip |
|---|
| Wenn Sie an Bibliotheken arbeiten, müssen Sie diese zuerst installieren bevor Sie Ihre Änderungen an diesen testen oder debuggen können.
Da this lästig und zeitverschlingend ist, sollten Sie für alle betreffenden Bibliotheken Symlinks erstellen (ln -s), die aus dem Build-Verzeichnis auf das Installations-Verzeichnis verweisen. Oft benutzen selbst einfache Programme interne Bibliotheken, zum Beispiel ist der Einstellungsdialog von Konsole in Wirklichkeit eine Bibliothek, |