Getting Started/Build/KDE4 (de)

Jump to: navigation, search

Template:I18n Getting Started Build KDE4

(Diese Anleitung befindet sich noch im Aufbau und ist eine Kopie des englischen Orginals. Hilf mit, es zu übersetzen und es auf dem aktuellen Stand zu halten!)

Contents

Übersicht

Diese Anleitung zeigt einen Weg, um KDE auf Linux und BSD-Systemen zu komplieren und laufen zu lassen. Als Grundlage verwenden wir die Shell. Wenn Sie sich für andere Systeme wie etwa Solaris, MacOS oder Microsoft Windows ersetzen, besuchen Sie bitte Build und folgen Sie den Links am Ende der Seite.

noframe
 
Warning
Stellen Sie sich auf verstärkt auftretende Buildprobleme an Montagen ein, da die Entwickler an diesem Wochentag kritische Änderungen vornehmen. Das Dashboard zeigt unerwartete Probleme beim Kompilieren an.


Benötigte Software

Folgendes muss installiert sein, um dieses Tutorial erfolgreich durchführen zu können:

  • gcc und g++ vom gcc Projekt, vorzugsweise Version 4.1 oder höher
  • svn, der subversion revision control client
  • pkg-config
  • devel-(Entwicklungs-)Bibliotheken und -header für X11, OpenGL (mesa-common-dev und libglu1-mesa-dev), libjpeg, libpng, libungif, libclucene, librdf, libxml2 und libxslt
  • Das makeobj Skript, welches Teil von kdesdk ist. Sie können es als Teil von kdesdk (kdesdk-scripts in Debian) installieren oder von hier einzeln herunterladen: WebSVN
  • das shared-mime-info Paket, welches der freedesktop MIME Standard ist, den KDE nun nutzt
  • boost, welches von kdebase gebraucht wird. Nach dem Kompilieren und/oder Installieren von boost fügen Sie das boost-Verzeichnis (das, welches das include-Unterverzeichnis enthält) zu CMAKE_INCLUDE_PATH hinzu oder kreieren Sie eine Umgebungsvariable namens BOOST_ROOT, die zum boost-Verzeichnis verweist, um cmake den Ort von boost mitzuteilen (FindBoost).

Weiterhin ist es zu empfehlen, folgende Software bereits installiert zu haben:

  • bash

Kubuntu

In Kubuntu 7.04 (Feisty) kann alle zum Bau der Pakete benötigte Software mit folgendem Befehl installiert werden: sudo aptitude install build-essential cdbs debhelper cmake libungif4-dev \ libxml2-dev libxslt1-dev libbz2-dev libclucene-dev librdf-dev \ shared-mime-info libgl1-mesa-dev libglu1-mesa-dev mesa-common-dev \ libxext-dev libjpeg-dev libpng-dev libsm-dev libxinerama-dev \ libxrender-dev libfontconfig-dev libboost-dev libxcursor-dev doxygen

Die manuelle Installation von Qt 4.3, CMake 2.4.6 und DBus kann durch die Installation der folgenden Pakete und ihrer Abhängigkeiten vermieden werden: sudo aptitude install libqt4-dev-kdecopy libdbus-1-dev cmake

Für eine voll funktionstüchtige apidox Umgebung wird ebenfalls zusätzliche Software benötigt: sudo aptitude install graphviz

openSUSE

noframe
 
Note
Der openSUSE build service stellt ebenfalls tagesaktuelle KDE-4-Pakete bereit, die das gesamte auf dieser Seite beschriebene Vorgehen überflüssig machen. Weitere Informationen findet man direkt im openSUSE wiki unter KDE4.

In OpenSuse können Pakete mit Hilfe von Zypper installiert werden: sudo zypper install <package-name>

In älteren SUSE-Versionen geht dies nur mit Yast: yast2 -i <packagename>

Die meisten zum Bau von KDE 4 nötigen Pakete sind: xorg-x11-devel, libxml2-devel, kdesdk3, clucene-core-devel, libjpeg-devel, liblrdf-devel, libpng-devel, libxslt-devel, Mesa-devel, giflib-devel, subversion, gcc, gcc-c++

Bereits vorkompilierte CMake-Pakete für openSUSE sind direkt verfügbar im openSUSE build service.

Ein Benutzer für die KDE 4 Entwicklung

noframe
 
Note
Einige Menschen ziehen es vor, für KDE 4 einen separaten Nutzer-Account einzurichten, um nicht aus Versehen durch noch bestehende Bugs oder ähnliches Daten zu verlieren. Die Anleitung hier basiert auf der Herangehensweise.

Es ist jedoch deutlich effizienter alles mit einem einzigen Nutzer-Account zu machen. Unter Increased Productivity in KDE4 with Scripts findet man mehr Details dazu.

In diesem Fall ist die folgende Anleitung noch immer gültig, jedoch sollten die nötigen Umgebungsvariablen nicht in die .bashrc, sondern in eine separate Datei geschrieben werden, die dann bei Bedarf eingelesen wird.

Option 1: Kommandozeile

useradd -m kde-devel passwd kde-devel

Option 2: Über KControl

Anstatt der oben genannten Befehle kann man auch mit Hilfe des Nutzer-Moduls des KDE Control Centers (kcontrol) einen weiteren Nutzer einrichten.

Einrichten der Entwicklungsumgebung

Kopieren Sie die Datei ~/.bashrc von Ihrem normalen Nutzer-Account zu Ihrem neuen kde-devel-Account. Danach fügen Sie den Inhalt der Seite example .bashrc in die Datei ~kde-devel/.bashrc ein. Stellen Sie sicher, dass die Zeile alias make=makeobj auskommentiert ist falls auf Ihrem System das Programm makeobj nicht verfügbar ist. Die neue ~/.bashrc wird mit folgendem Befehl eingelesen: source ~/.bashrc

Nun haben Sie Zugriff auf Befehle wie cmakekde, die in dieser Anleitung genutzt werden. Auch wird so sichergestellt, dass alle wichtigen Umgebungsvariablen (z.B. für die Pfadangaben von Qt, KDE und CMake) richtig gesetzt sind.

Für weitere Informationen lesen Sie bitte Getting Started/Increased Productivity in KDE4 with Scripts.

Zum neuen Benutzer wechseln

Sie können sich nun als Benutzer kde-devel anmelden (der Bindestrich ist wichtig!): su - kde-devel

Der Rest dieser Anleitung geht davon aus, dass Sie alle Befehle als kde-devel ausführen.

Die Shell des Entwicklungsbenutzers

Auf manchen Systemen nutzen neue Benutzer standardmäßig /bin/sh. Wenn dies auf Ihrem System nicht der Fall ist, können Sie diesen Abschnitt überspringen. /bin/sh zu nuzten kann sich als sehr unangenehm erweisen. Daher sollten Sie erwägen, zu /bin/bash oder einer anderen Shell zu wechseln.

Option 1: Als kde-devel-Benutzer

Wenn Sie keine root-Privilegien haben und Ihr System das Wechseln der eigenen Shell mittels chsh unterstützt, können Sie versuchen, Ihre Shell zu /bin/bash zu wechseln, indem Sie Folgendes eingeben: chsh -s /bin/bash kde-devel

Option 2: Als root-Benutzer

Wenn Ihr System die Anwendung usermod beinhaltet, können Sie den folgenden Befehl als root-Benuzter eingeben: usermod -s /bin/bash.

Eine weitere Möglichkeit ist die Nutzung der Anwendung vipw als root-Benuzter, um auf sichere Art /etc/passwd zu editieren. Machen Sie 'kde-devel' in dieser Datei ausfindig und ändern Sie '/bin/sh' am Zeilenende in '/bin/bash'. Speichern Sie die Änderungen und beenden Sie die Anwendung.

Die neue Shell wird automatisch gestartet wenn Sie sich wieder als kde-devel-Benutzer einloggen.

D-Bus

QtDBus und KDE arbeiten mit den D-Bus-Versionen 0.6.2, 0.92 und höher zusammen. Die Versionen 0.60 und 0.61 funktionieren eventuell auch, sind aber ungetestet. Die Versionen 0.90 und 0.91 funktionieren definitiv nicht.

Wir empfehlen, dass sie eine aktuelle, stabile Version, also größer Version 1.0, benutzen, wenigstens aber Version 0.94.

Wenn Sie eine aktuelle D-Bus-Version auf ihrem System bereits installiert haben oder Ihre D-Bus-Version nicht aktualisieren wollen, können Sie die nächste Sektion überspringen.

Bevor Sie die nächsten Schritte durchgehen sollten Sie sicherstellen, dass die X11-header und -Bibliotheken installiert sind. Das Konfigurationsskript sollte in Zeile 5 Folgendes ausgeben:

Building X11 code:        yes

Das Kochrezept

Ktip.png
 
Tip
Stellen Sie sicher, dass Ihre Umgebung wie beschrieben eingerichtet wurde. Das ist wichtig für das Funktionieren der cs- und cb-Befehle.


cs # 'cs' ist eine Bash-Funktion, klicken Sie hier, um mehr darüber zu lernen 
wget http://dbus.freedesktop.org/releases/dbus/dbus-1.0.2.tar.gz
tar -xvzf dbus-1.0.2.tar.gz
cd dbus-1.0.2/
./configure --prefix=$DBUSDIR --localstatedir=$KDEDIR/var
make
make install
dbus-uuidgen --ensure

Was hier passiert

Wir wechseln in Zeile 1 in das Quellen-Verzeichnis, laden in Zeile 2 den Quellcode von freedesktop.org herunter und entpacken den in Zeile 3. In Zeile 4 wechseln wir in das neu erschaffene Verzeichnis, und bereiten in Zeile 5 das Kompilieren der Quelldateien vor. Zeile 6 setzt den Kompilier-Vorgang in Gang, Zeile 7 installiert D-Bus, und in Zeile 8 benutzen wir das dbus-uuidgen-Werkzeug, um eine Maschinen-Identifikation zu installieren. Das erlaubt dem bus, atuomatisch mit der Desktop-Sitzung zu starten.

Achten Sie darauf, dass Sie Schreibrechte auf /var haben, da Sie sie für die letzten beiden Schritte benötigen. Falls Ihr System kein sudo-Kommando unterstützt, können Sie auch su benutzen, z.B. su -c "make install".

Fehlerbehebung

Falls Sie die Fehlermeldung makeobj: command not found bekommen fehlt Ihnen makeobj.

CMake

Skip this if you have CMake >=2.4.5 installed. You should be able to directly use the binary packages available on the CMake site. There are also distribution specific packages available.

Das Kochrezept

cs # 'cs' is a bash function, click Here to learn more 
wget http://www.cmake.org/files/v2.4/cmake-2.4.6.tar.gz
tar zxf cmake-2.4.6.tar.gz
mkdir cmake-build
cd cmake-build 
../cmake-2.4.6/bootstrap
make
sudo make install

Was hier passiert

First, we go back to the kde-devel user's source directory (line 1), get the CMake sources (line 2) and unpack them (line 3). We create a directory to build CMake in (line 4) and go into it (line 5). We then run the CMake bootstrap script to set up the CMake build (line 6), then make (line 7) and install it (line 8) using the root user.

If your system does not have the sudo command, you can instead do su -c "make install".

Qt

Next we need to get the Qt4 that is in KDE's source repository. KDE is guaranteed to build against any Qt 4.3. Qt 4.2 and earlier are not supported and will not work. Qt 4.3 has been released only recently, so your distribution probably doesn't have packages for it yet (known exceptions: Kubuntu, openSUSE). You should use the copy in the KDE Subversion servers.

Das Kochrezept

cd
svn checkout svn://anonsvn.kde.org/home/kde/trunk/qt-copy
cd qt-copy
./apply_patches
./configure -qt-gif -no-exceptions -debug -fast \
 -prefix $QTDIR -qdbus -pch -nomake examples \
 -nomake demos
make -j2
# make install: only if QTDIR is not the current directory!
make install

Was hier passiert

We switch back to the kde-devel user's home directory (line 1) and download the source code using subversion (svn) from KDE's repository (line 2). After changing into the resulting qt-copy directory (line 3), we run a script that manages the patches that come with qt-copy (line 4).

Once the patches have been applied, we then set up the build using the configure script (line 5-7). The various command line options used are explained in the qt-copy/README.qt-copy file. Finally, we build the minimal requirements for KDE (line 8) and install (line 9-10) Qt. If you want all the example and demo applications, you can either build them individually or simply do a make from the qt-copy directory.

Note that the installation does not require root as it installs Qt locally into $QTDIR. Anyway, installation is only needed if $QTDIR differs from $HOME/qt-copy, which is not the case if you have exactly followed the instructions.

Fehlerbebung

If you get "error: X11/Xlib.h: No such file or directory", install the devel package of xorg (the actual name may vary between operating systems, for example it is xorg-dev on Ubuntu based systems such as Kubuntu).

If you get an error in the configure step about missing defines, check the value of $QMAKESPEC. Some distributions set this to point directly to the system-installed Qt. If unset QMAKESPEC solves the problem, you probably want to add it to the ~/.bashrc script.

If you get an error ".pch/debug-shared/QtCore", this is because Qt-4.3 enables precompiled headers if your gcc supports it, but for some reason it doesn't work for you. If you use distcc, configure qt with -no-pch. If you use icecream, update to the latest icecream from svn trunk.

Try running any Qt program, like assistant. If it crashes in QSpanData::adjustSpanMethods, then your problem is the oxygen style. Try removing lib/kde4/plugins/styles/kstyle-oxygen.so and lib/kde4/plugins/styles/oxygen.so if they exist in the KDE install prefix.

Strigi

noframe
 
Warning
Wenn Sie diesen Abschnitt erreicht haben, ohne Setting Up The Environment zu lesen, werden die hier angebotenen Rezepte nicht funktionieren. Diese Rezepte sind nicht defekt; cs und cb sind keine Tippfehler. Ihre Umgebung muss korrekt eingerichtet sein, damit diese Instruktionen funktionieren.


Der Code zum Erhalten der Dateimetadaten ist nun von Strigi abhängig. Um Strigi zu installieren, benötigen Sie die Bibliotheken und header von libz, libbz2, openssl (libcrypto oder libssl), libclucene (=0.9.16; Version 0.9.17 funktioniert nicht), und entweder libxml2 oder libexpat.

Das Kochrezept

cs # cs is not a typo
svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/strigi
cd strigi
cmakekde

Was hier passiert

Wir wechseln in das Quellverzeichnis (Zeile 1), laden den Quellcode für Strigi mittels subversion herunter (Zeile 2) und wechseln anschließend in das neue ~/src/strigi Verzeichnis (Zeile 3). Dann starten wir die Kompilierung (Zeile 4). Wir finden uns im Anschluss an die Kompilierung im build-Verzeichnis von Strigi wieder.

Fehlerbehebung

Wenn Sie

CMake Error: This project requires some variables to be set,
and cmake can not find them.
Please set the following variables:
LIBXML2_INCLUDE_DIR (ADVANCED)

erhalten, sollten Sie das devel-Paket für libxml2 installieren.

Soprano

noframe
 
Warning
Wenn Sie diesen Abschnitt erreicht haben, ohne Setting Up The Environment zu lesen, werden die hier angebotenen Rezepte nicht funktionieren. Diese Rezepte sind nicht defekt; cs und cb sind keine Tippfehler. Ihre Umgebung muss korrekt eingerichtet sein, damit diese Instruktionen funktionieren.


Der Code zum Erhalten von kmetadata für Dateien ist von Soprano abhängig. Um Soprano zu installieren benötigen Sie die Bibliotheken und header von librdf.

Das Kochrezept

cd $KDE_SRC
svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/soprano
cd soprano
cmakekde

Was hier passiert

Wir wechseln in das Quellverzeichnis (Zeile 1), laden den Quellcode für Soprano mittels subversion herunter (Zeile 2) und wechseln anschließend in das neue ~/src/soprano Verzeichnis (Zeile 3). Dann starten wir die Kompilierung (Zeile 4). Wir finden uns im Anschluss an die Kompilierung im build-Verzeichnis von Soprano wieder.

Fehlerbebung

Wenn Sie

CMake Error: Could NOT find REDLAND

erhalten, benötigen Sie librdf aus den Redland-Bibliotheken. Wenn Ihre Distribution das librdf Paket nicht zur Verfügung stellt, können Sie dessen Quellcode hier herunterladen http://download.librdf.org/source/ und selbst kompilieren. In Gentoo wird das Paket 'redland' anstatt librdf genannt.

kdelibs

With Qt4 and Strigi built, we can now move on to building KDE's base libraries. If you use the aforementioned .bashrc this is where those new functions come in handy.

Das Kochrezept

cd $KDE_SRC
mkdir KDE && cd KDE
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
cmakekde

Was hier passiert

We change to the base source directory (line 1) then make and go into the KDE directory (line 2). We download the sources for kdelibs using subversion (line 3), go into the new ~/src/KDE/kdelibs directory (line 4), and commence the build (line 5). This will leave us in the kdelibs build directory after the build is completed.

Ktip.png
 
Tip
There might be missing dependencies on your system! They are easily overlooked in the output of cmakekde. You might want to do a cmake $KDE_SRC/KDE/MODULE_NAME prior to compiling any kde modules (like kdelibs, kdepimlibs etc.)


Additional KDE-specific CMake modules

There are additional CMake modules in kdelibs/cmake/modules/ that are necessary for building KDE4 applications. These will be installed for you when kdelibs itself is installed.

Fehlerbebung

If you have problems compiling kdelibs, first make sure the software in the Required Software section above is installed and works. Other possible hints include:

  • If the cmakekde command fails stating that CMake requires an out of source build directory, remove ~/src/KDE/kdelibs/CMakeCache.txt, and try again.

If cmakekde still gives the same error then try this

cd
cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull \
-DKDE4_BUILD_TESTS=ON \
~/src/KDE/kdelibs
make
make install
  • If you received an error stating "Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.", then you need to change to your build directory before running cmakekde. (e.g cs KDE/kdelibs && cb && cmakekde)
  • If Qt wasn't found or the wrong version of Qt was found, make sure that the qmake from the Qt you need is the first qmake in the path.
  • If the problems persist, try the CMake make-option --keep-going.
  • Here you need the libungif library, otherwise you will get an error message like "Could NOT find GIF".
  • Qt-4.3 upgrade: if you get a link error in kjsembed talking about QScriptEngine, edit CMakeCache.txt in kdelibs and remove the lines that talk about QT_QTUITOOLS_LIBRARY, then type make again (that static library has a new dependency, and the cmake code that adds it needs to run).
  • if you get CMake Error: KDE Requires Qt to be built with SSL support

, install openssl-devel, and re-compile QT.

kdepimlibs

Sie müssen kdepimlibs nach kdelibs, aber vor kdebase installieren.

Das Kochrezept

cs KDE # cs is not a typo
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs
cd kdepimlibs
cmakekde

Was hier passiert

Wir wechseln in das KDE Quellverzeichnis (Zeile 1), laden den Quellcode für kdepimlibs mittels subversion herunter (Zeile 2) und wechseln anschließend in das neue ~/src/KDE/kdepimlibs Verzeichnis (Zeile 3). Dann starten wir die Kompilierung (Zeile 4). Wir finden uns im Anschluss an die Kompilierung im build-Verzeichnis von kdepimlibs wieder.

kdebase

Für manche kioslaves mag kdebase benötigt werden.

cs KDE # cs is not a typo
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase
cd kdebase
cmakekde

Fehlerbebung

Wenn Sie Schwierigkeiten beim Kompilieren von kdebase haben:

  • Stellen Sie sicher, dass die libxss header installiert sind. (Sollten diese header nicht installiert sein, erhalten Sie in der Regel undefinierte Verweise auf xscreensaver Objekte.)
  • which meinproc muss /home/kde-devel/kde/bin/meinproc ausgeben.
  • Wenn cmakekde das kdepimlibs-Verzeichnis nicht finden kann, editieren Sie die Datei $KDE_BUILD/kdebase/CMakeCache.txt und definieren Sie KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs manuell.
  • Wenn Sie die Fehlerausgabe "Please set the following variables: X11_XTest_LIB (ADVANCED)" erhalten, installieren Sie das devel Paket von Xtst. Auf manchen Systemen ist es separat von xext gepackt und x11proto-xext-dev oder libxtst-dev benannt. Sie müssen eventuell außerdem nach der Installation dieses Paketes die Datei CMakeCache.txt im build Verzeichnis löschen.
  • Dasselbe gilt für die analoge Fehlerausgabe betreffend der Variable "X11_Xinerama_LIB (ADVANCED)": Sie benötigen das devel Paket für xinerama.
  • Wenn Sie die Fehlerausgabe "Please set the following variables: FONTCONFIG_INCLUDE_DIR, FONTCONFIG_LIBRARIES (ADVANCED)" erhalten, müssen Sie die libfontconfig header installieren.
  • Wenn Sie die Fehlerausgabe "CMake Error: This project requires some variables to be set, and cmake can not find them. Please set the following variables: KMETADATA_LIBRARIES" erhalten, müssen Sie soprano aus kdesupport installieren und dann kdelibs neu kompilieren.
  • Wenn Sie die Fehlerausgabe "‘XserverRegion’ does not name a type" erhalten, stellen Sie sicher, dass Sie die libxcomposite header installiert haben. (In Ubuntu werden sie libxcomposite-dev genannt.)

Lokale API-Dokumentation erstellen

Obwohl die API-Dokumentation für KDE online unter api.kde.org verfügbar ist, kann es hilfreich sein, sie offline verfügbar zu haben, zum Beispiel wenn Sie KDevelop zum Durchsuchen der Dokumentation nutzen oder wenn Sie nicht ständig online sein können.

Seien Sie sich bewusst, dass das Generieren der API-Dokumentation mehrere Stunden in Anspruch nehmen kann und knapp einen halben Gigabyte an Speicherplatz benötigt. Das Generieren wird von einem Skript in kdelibs/doc/api ausgeführt; Sie benötigen doxygen, um es ausführen zu können.

Um die API-Dokumentation für kdelibs zu generieren, geben Sie Folgendes ein:

cs KDE/kdelibs # cs is not a typo
$KDE_SRC/KDE/kdelibs/doc/api/doxygen.sh \
--doxdatadir=$KDE_SRC/KDE/kdelibs/doc/common .

Wiederholen Sie dies nach Bedarf für andere Module.

Allgemeine Fehlerbehebung

Es kann im Laufe der Zeit nach mehrmaligem Ausführen von svn up vorkommen, dass sich das Ausgabeformat einiger Werkzeuge, die in der KDE Werkzeugkette benutzt werden, ändert. Zum Beispiel werden kcfg Dateien vom kconfig_compiler gelesen, um die Konfigurationsdialoge zu generieren. Da CMake diese Veränderungen nicht erkennen kann, kann das Kompilieren fehlschlagen. Eine provisorische Lösung ist, die Regenerierung all dieser Dateien zu erzwingen:

find $KDE_SRC/kde/kdebase -name "*.kcfg" | xargs touch

Dasselbe gilt für ui Dateien wie solche, die vom Qt designer generiert werden.

Das wars!

Sie sind nun bereit, andere svn Module in derselben Weise wie kdebase zu kompilieren, KDE4 zu benutzen und zu testen, sowie Ihre eigenen Patches und Anwendungen zu schreiben.

Siehe auch die Anleitung Set up KDE 4 for development um Hilfe beim Starten von KDE4 Anwendungen sowie zur Nutzung von KDevelop zu erhalten.


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal