Getting Started/Build/Historic/KDE4: Difference between revisions
No edit summary |
(→Requirements: merge in other relevant information from the original page) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Build Recipes == | == Build Recipes == | ||
=== Git Unstable Master === | |||
This will be the most commonly used version of the Full Recipe. | This will be the most commonly used version of the Full Recipe. | ||
Line 84: | Line 17: | ||
make install | make install | ||
=== Git Unstable Branch === | |||
This recipe uses the same Git clone as your main Unstable Master build but allows you to build a specific development branch you may be interested in. It assumes you have already cloned the project repository. Use 'git branch -r' to find out the available development branches. | This recipe uses the same Git clone as your main Unstable Master build but allows you to build a specific development branch you may be interested in. It assumes you have already cloned the project repository. Use 'git branch -r' to find out the available development branches. | ||
Line 99: | Line 32: | ||
make install | make install | ||
=== Git Stable Branch === | |||
This recipe | This recipe uses [[/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to set up a separate work directory for working on the stable branch. This will save excessive rebuilding when switching between stable and unstable and uses less space than a separate clone. | ||
The stable branch name will be of the form 'KDE/4.6' or '4.6' depending on the Project. Use 'git branch -r' to find out the available release branches. | The stable branch name will be of the form 'KDE/4.6' or '4.6' depending on the Project. Use 'git branch -r' to find out the available release branches. | ||
cd | cd $KDE_SRC/master/<module> | ||
git-new-workdir <project> $KDE_SRC/<stable-branch>/<module>/<project> <stable-branch> | |||
cd <your build branch directory, or the module source dir> | cd <your build branch directory, or the module source dir> | ||
mkdir <your module build dir> | mkdir <your module build dir> | ||
Line 120: | Line 50: | ||
make install | make install | ||
An example git-new-workdir command for KDE SC 4.6 would be: | |||
git-new-workdir ~/kde/src/master/kdelibs ~/kde/src/4.6/kdelibs KDE/4.6 | |||
=== Subversion Unstable === | |||
cd <your source root directory> | cd <your source root directory> | ||
Line 140: | Line 74: | ||
svn checkout svn+ssh://<username>@svn.kde.org/home/kde/trunk/KDE/<module> | svn checkout svn+ssh://<username>@svn.kde.org/home/kde/trunk/KDE/<module> | ||
=== Subversion Stable === | |||
cd <your source branch directory> | cd <your source branch directory> | ||
Line 169: | Line 103: | ||
make kdeui/fast | make kdeui/fast | ||
make install/fast | make install/fast | ||
== Requirements == | |||
The following table summarizes all the Projects contained in KDE Support and the versions required for building KDE Software. The optional/mandatory coloring is based on the requirements of the KDE Development Platform, the requirements for building other KDE Modules or Applications may vary. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/automoc Automoc] | |||
| 0.9.88 | |||
| | |||
| No | |||
| | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/attica Attica] | |||
| 0.2.0 | |||
| | |||
| Yes | |||
| | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/polkit-qt-1 Polkit Qt] | |||
| 0.99 | |||
| | |||
| Yes | |||
| Requires [http://www.freedesktop.org/wiki/Software/PolicyKit PolicyKit] >= 0.98 | |||
|- | |||
| [https://projects.kde.org/projects/kdesupport/strigi Strigi] | |||
| 0.7.2 | |||
| | |||
| Yes | |||
| After cloning the Strigi parent project, you will have to run the change_to_development_git.sh script to pull in all sub projects. See below for requirements. | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/soprano Soprano] | |||
| | |||
| | |||
| Yes | |||
| Soprano must be built BEFORE Akonadi. | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/akonadi Akonadi] | |||
| | |||
| | |||
| Yes | |||
| Akonadi must be built AFTER Soprano. | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/cagibi Cagibi] | |||
| | |||
| | |||
| Yes | |||
| | |||
|- | |||
| [https://projects.kde.org/projects/kdesupport/phonon Phonon] | |||
| | |||
| | |||
| Yes | |||
| You need to install this Phonon in the same location as Phonon from Qt i.e. in $QTDIR and NOT in $KDEDIR. You will also need to install a backend module. | |||
|- | |||
| [http://projects.kde.org/projects/kdesupport/prison Prison] | |||
| | |||
| style="background-color:#66FF66" | Any | |||
| Yes | |||
| Requires [http://fukuchi.org/works/qrencode/index.en.html QRencode] and [http://www.libdmtx.org/ Dmtx] | |||
|- | |||
| Oxygen Icons | |||
| | |||
| | |||
| No | |||
| In KDESupport module (see below) | |||
|- | |||
| QImageBlitz | |||
| | |||
| | |||
| Yes | |||
| In KDESupport module (see below) | |||
|- | |||
| TagLib | |||
| | |||
| | |||
| Yes | |||
| In KDESupport module (see below) | |||
|- | |||
| cpp2xml | |||
| | |||
| | |||
| No | |||
| In KDESupport module (see below) | |||
|} | |||
===Strigi requirements=== | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Project Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http://qt.nokia.com/ Qt] | |||
| style="background-color:#FF6666" | >= 4.3.0 | |||
| style="background-color:#FF6666" | >= 4.3.0 | |||
| Yes | |||
| The Qt development framework. | |||
|- | |||
| [http://www.zlib.net/ libz] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for zip file compression | |||
|- | |||
| [http://bzip.org/ libbz2] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for bzip2 file compression. | |||
|- | |||
| [http://xmlsoft.org/ libxml2] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for parsing XML | |||
|- | |||
| [http://clucene.sourceforge.net/ Clucene] | |||
| style="background-color:#66FF66" | >=0.9.16a | |||
| style="background-color:#66FF66" | >=0.9.16a | |||
| Yes | |||
| A high-performance indexing and searching API. Version 0.9.17 does '''not''' work. | |||
|- | |||
| [http://www.exiv2.org/ Exiv2] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A library to manage image metadata. | |||
|- | |||
| [http://www.ffmpeg.org/ FFMPEG] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A library for reading audio and video files. | |||
|- | |||
| [http://www.freedesktop.org/wiki/Software/dbus DBus] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A message bus system. | |||
|- | |||
| [http://oss.sgi.com/projects/fam/ FAM] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A tool for file system monitoring. | |||
|- | |||
| [http://logging.apache.org/log4cxx/index.html Log4cxx] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A logging framework for C++ | |||
|- | |||
| [http://sourceforge.net/projects/cppunit/ CppUnit] | |||
| style="background-color:#66FF66" | | |||
| style="background-color:#66FF66" | | |||
| Yes | |||
| A C++ Unit Testing framework | |||
|} | |||
===KDESupport module=== | |||
cd <your source root directory> | |||
svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/ | |||
cd <your build root directory, or the module source dir> | |||
mkdir <your module build dir> | |||
cd <your module build dir> | |||
cmake <path to your module source dir> | |||
\ -DCMAKE_INSTALL_PREFIX=$KDEDIR | |||
\ -DCMAKE_BUILD_TYPE=debugfull | |||
\ -DKDE4_BUILD_TESTS=TRUE | |||
make | |||
make install | |||
== KDE Libraries == | |||
KDE Libraries (kdelibs) is the core library of the KDE Development Platform. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdelibs https://projects.kde.org/projects/kde/kdelibs] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kdelibs.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kdelibs.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''KDE Libraries Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http://oscaf.sourceforge.net Shared desktop ontologies] | |||
| style="background-color:#FFFFFF" | ?? | |||
| style="background-color:#FFFF66" | >= 0.6.50 | |||
| ?? | |||
| Support for the Nepomuk semantic desktop system.<br />This is needed if you intend to install ''kdepimlibs'' | |||
|- | |||
| [http://www.grantlee.org Grantlee] | |||
| style="background-color:#FFFFFF" | ?? | |||
| style="background-color:#66FF66" | >= 0.1.0 | |||
| ?? | |||
| Grantlee is used for generating compilable code by the ModelEventLogger.<br />Without Grantlee, the logger will do nothing. | |||
|- | |||
| [http://aspell.net Aspell] | |||
| style="background-color:#FFFFFF" | | |||
| style="background-color:#66FF66" | | |||
| ?? | |||
| Spell checking support via Aspell. | |||
|- | |||
| [http://ivrix.org.il/projects/spell-checker/ HSpell] | |||
| style="background-color:#FFFFFF" | | |||
| style="background-color:#66FF66" | | |||
| ?? | |||
| Spell checking support for Hebrew. | |||
|} | |||
== KDE PIM Libraries == | |||
KDE PIM Libraries (kdepimlibs) is the PIM library of the KDE Development Platform. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdepimlibs https://projects.kde.org/projects/kde/kdepimlibs] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kdepimlibs.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kdepimlibs.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''KDE PIM Libraries Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
=== Troubleshooting === | |||
If cmake tells you that it can not find ''Nepomuk'', it may be that you are missing some of the nepomuk dependencies of kdelibs. | |||
The solution is to rebuild kdelibs with the missing dependencies. | |||
== KDE Runtime == | |||
KDE Runtime (kde-runtime) is the runtime component of the KDE Development Platform. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kde-runtime/ https://projects.kde.org/projects/kde/kde-runtime/] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kde-runtime.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kde-runtime.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Project Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
== KActivities == | |||
API for using and interacting with Activities as a consumer, application adding information to them or as an activity manager. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdelibs/kactivities https://projects.kde.org/projects/kde/kdelibs/kactivities] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kactivities | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kactivities | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Project Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
== Kate == | |||
TODO: Does it belong here or Apps? | |||
Kate is the text editor component for the KDE Development Platform. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdebase/kate https://projects.kde.org/projects/kde/kdebase/kate] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kate.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kate.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Kate Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
== Konsole == | |||
TODO: Does it belong here or Apps? | |||
Konsole is the terminal emulator component for the KDE Development Platform. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdebase/konsole https://projects.kde.org/projects/kde/kdebase/konsole] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:konsole.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/konsole.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''Konsole Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
== KDE SDK == | |||
The KDE SDK Module is not strictly speaking part of the KDE Development Platform, but it contains many useful tools and scripts that make developing KDE Software a lot easier and so is recommended to always be built or installed. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | http://websvn.kde.org/trunk/KDE/kdesdk/ | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/ | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/ | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''KDE SDK Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
== KDE Workspace == | |||
KDE Workspace (kde-workspace) provides desktop, netbook and mobile workspaces.. | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|- | |||
| width="25%" style="background-color:#EFEFEF;" | '''Project Page''' | |||
| width="75%" | [https://projects.kde.org/projects/kde/kdebase/kde-workspace https://projects.kde.org/projects/kde/kdebase/kde-workspace] | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Easy Repository''' | |||
| git clone kde:kde-workspace.git | |||
|- | |||
| style="background-color:#EFEFEF;" | '''Full Repository''' | |||
| git clone git://anongit.kde.org/kde-workspace.git | |||
|} | |||
{| border="1" cellpadding="5" cellspacing="0" | |||
|+ '''KDE Workspace Build Requirements''' | |||
|- | |||
! width="20%" style="background-color:#EFEFEF;" | Requirement | |||
! width="15%" style="background-color:#EFEFEF;" | Stable Requires | |||
! width="15%" style="background-color:#EFEFEF;" | Unstable Requires | |||
! width="10%" style="background-color:#EFEFEF;" | Devel Pkgs? | |||
! width="40%" style="background-color:#EFEFEF;" | Details | |||
|- | |||
| [http:// Project] | |||
| style="background-color:#FF6666" | | |||
| style="background-color:#FF6666" | | |||
| Yes | |||
| A library for | |||
|} | |||
==Applications== | |||
Here we will try to compile an application, let's say blinken. You can find information about all KDE software at the [http://projects.kde.org KDE Projects page] | |||
First we will download the code | |||
<syntaxhighlight lang="bash"> | |||
git clone git://anongit.kde.org/blinken | |||
</syntaxhighlight> | |||
This will create a directory with blinken's source code inside. We also create a directory to contain the files generated during the build process, and change into that directory. | |||
<syntaxhighlight lang="bash"> | |||
cd blinken; mkdir build; cd build | |||
</syntaxhighlight> | |||
Now we'll set up the development system by calling cmake. We're passing two parameters here: CMAKE_INSTALL_PREFIX indicates where the application will be installed, and CMAKE_BUILD_TYPE has the value "debugfull" to tell CMake not to throw away information that is useful for developers. | |||
<syntaxhighlight lang="bash"> | |||
cmake .. -DCMAKE_INSTALL_PREFIX=<install_path> -DCMAKE_BUILD_TYPE=debugfull | |||
</syntaxhighlight> | |||
If you just want to install it in the same place as the rest of KDE, you can do | |||
<syntaxhighlight lang="bash"> | |||
cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` -DCMAKE_BUILD_TYPE=debugfull | |||
</syntaxhighlight> | |||
The moment we were all expecting has arrived, now you can start compiling. | |||
<syntaxhighlight lang="bash"> | |||
make -j3 | |||
</syntaxhighlight> | |||
The <tt>-j3</tt> option tells make to try to do up to three things at once. A good rule for this option is to add one to the number of cores your computer has. In this example, we're assuming you have a dual-core computer (which is fairly common). If you have a quad-core computer, you may want to pass <tt>-j5</tt>. If you want to do other things on your computer at the same time, you may want to lower the number. Note that if you are not sure you should rather take a lower number. | |||
Some applications can work without installing but that's usually not the case so just do it if you know what you're doing, otherwise you will want to install probably. | |||
<syntaxhighlight lang="bash"> | |||
make install | |||
</syntaxhighlight> | |||
If you're installing it to a directory where the owner is root, then you'll probably need some extended privileges to install. That's not the only option, though. You can create a specific install directory by pointing the PATH and KDEDIRS variables to it, more information here: [[Getting_Started/Build/Environment]] |
Latest revision as of 10:32, 11 March 2016
Build Recipes
Git Unstable Master
This will be the most commonly used version of the Full Recipe.
cd <your source root directory> git clone git://anongit.kde.org/<module>.git cd <your build root directory, or the module source dir> mkdir <your module build dir> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores make install
Git Unstable Branch
This recipe uses the same Git clone as your main Unstable Master build but allows you to build a specific development branch you may be interested in. It assumes you have already cloned the project repository. Use 'git branch -r' to find out the available development branches.
cd <your project source directory> git branch --track <branch> origin/<branch> git checkout <branch> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores make install
Git Stable Branch
This recipe uses git-new-workdir script to set up a separate work directory for working on the stable branch. This will save excessive rebuilding when switching between stable and unstable and uses less space than a separate clone.
The stable branch name will be of the form 'KDE/4.6' or '4.6' depending on the Project. Use 'git branch -r' to find out the available release branches.
cd $KDE_SRC/master/<module> git-new-workdir <project> $KDE_SRC/<stable-branch>/<module>/<project> <stable-branch> cd <your build branch directory, or the module source dir> mkdir <your module build dir> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores make install
An example git-new-workdir command for KDE SC 4.6 would be:
git-new-workdir ~/kde/src/master/kdelibs ~/kde/src/4.6/kdelibs KDE/4.6
Subversion Unstable
cd <your source root directory> svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/<module> cd <project> git branch --track <stable-branch> origin/<stable-branch> git checkout <stable-branch> cd <your build root directory, or the module source dir> mkdir <your module build dir> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores make install
If you have a developer account the Subversion command will be:
svn checkout svn+ssh://<username>@svn.kde.org/home/kde/trunk/KDE/<module>
Subversion Stable
cd <your source branch directory> svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/<branch>/<module> cd <project> git branch --track <stable-branch> origin/<stable-branch> git checkout <stable-branch> cd <your build branch directory, or the module source dir> mkdir <your module build dir> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores make install
If you have a developer account the Subversion command will be:
svn checkout svn+ssh://<username>@svn.kde.org/home/kde/branches/KDE/<branch>/<module>
Useful Tips
make /fast
If you want to recompile part of a module without rebuilding any other parts of a module that it uses then you can pass make the /fast option.
For example if you just want to rebuild the contentes of kdelibs/kdeui without rebuilding the contents of kdelibs/kdecore that it uses, then simply do:
make kdeui/fast make install/fast
Requirements
The following table summarizes all the Projects contained in KDE Support and the versions required for building KDE Software. The optional/mandatory coloring is based on the requirements of the KDE Development Platform, the requirements for building other KDE Modules or Applications may vary.
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
Automoc | 0.9.88 | No | ||
Attica | 0.2.0 | Yes | ||
Polkit Qt | 0.99 | Yes | Requires PolicyKit >= 0.98 | |
Strigi | 0.7.2 | Yes | After cloning the Strigi parent project, you will have to run the change_to_development_git.sh script to pull in all sub projects. See below for requirements. | |
Soprano | Yes | Soprano must be built BEFORE Akonadi. | ||
Akonadi | Yes | Akonadi must be built AFTER Soprano. | ||
Cagibi | Yes | |||
Phonon | Yes | You need to install this Phonon in the same location as Phonon from Qt i.e. in $QTDIR and NOT in $KDEDIR. You will also need to install a backend module. | ||
Prison | Any | Yes | Requires QRencode and Dmtx | |
Oxygen Icons | No | In KDESupport module (see below) | ||
QImageBlitz | Yes | In KDESupport module (see below) | ||
TagLib | Yes | In KDESupport module (see below) | ||
cpp2xml | No | In KDESupport module (see below) |
Strigi requirements
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
Qt | >= 4.3.0 | >= 4.3.0 | Yes | The Qt development framework. |
libz | Yes | A library for zip file compression | ||
libbz2 | Yes | A library for bzip2 file compression. | ||
libxml2 | Yes | A library for parsing XML | ||
Clucene | >=0.9.16a | >=0.9.16a | Yes | A high-performance indexing and searching API. Version 0.9.17 does not work. |
Exiv2 | Yes | A library to manage image metadata. | ||
FFMPEG | Yes | A library for reading audio and video files. | ||
DBus | Yes | A message bus system. | ||
FAM | Yes | A tool for file system monitoring. | ||
Log4cxx | Yes | A logging framework for C++ | ||
CppUnit | Yes | A C++ Unit Testing framework |
KDESupport module
cd <your source root directory> svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/ cd <your build root directory, or the module source dir> mkdir <your module build dir> cd <your module build dir> cmake <path to your module source dir> \ -DCMAKE_INSTALL_PREFIX=$KDEDIR \ -DCMAKE_BUILD_TYPE=debugfull \ -DKDE4_BUILD_TESTS=TRUE make make install
KDE Libraries
KDE Libraries (kdelibs) is the core library of the KDE Development Platform.
Project Page | https://projects.kde.org/projects/kde/kdelibs |
Easy Repository | git clone kde:kdelibs.git |
Full Repository | git clone git://anongit.kde.org/kdelibs.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
Shared desktop ontologies | ?? | >= 0.6.50 | ?? | Support for the Nepomuk semantic desktop system. This is needed if you intend to install kdepimlibs |
Grantlee | ?? | >= 0.1.0 | ?? | Grantlee is used for generating compilable code by the ModelEventLogger. Without Grantlee, the logger will do nothing. |
Aspell | ?? | Spell checking support via Aspell. | ||
HSpell | ?? | Spell checking support for Hebrew. |
KDE PIM Libraries
KDE PIM Libraries (kdepimlibs) is the PIM library of the KDE Development Platform.
Project Page | https://projects.kde.org/projects/kde/kdepimlibs |
Easy Repository | git clone kde:kdepimlibs.git |
Full Repository | git clone git://anongit.kde.org/kdepimlibs.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
Troubleshooting
If cmake tells you that it can not find Nepomuk, it may be that you are missing some of the nepomuk dependencies of kdelibs.
The solution is to rebuild kdelibs with the missing dependencies.
KDE Runtime
KDE Runtime (kde-runtime) is the runtime component of the KDE Development Platform.
Project Page | https://projects.kde.org/projects/kde/kde-runtime/ |
Easy Repository | git clone kde:kde-runtime.git |
Full Repository | git clone git://anongit.kde.org/kde-runtime.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
KActivities
API for using and interacting with Activities as a consumer, application adding information to them or as an activity manager.
Project Page | https://projects.kde.org/projects/kde/kdelibs/kactivities |
Easy Repository | git clone kde:kactivities |
Full Repository | git clone git://anongit.kde.org/kactivities |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
Kate
TODO: Does it belong here or Apps?
Kate is the text editor component for the KDE Development Platform.
Project Page | https://projects.kde.org/projects/kde/kdebase/kate |
Easy Repository | git clone kde:kate.git |
Full Repository | git clone git://anongit.kde.org/kate.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
Konsole
TODO: Does it belong here or Apps?
Konsole is the terminal emulator component for the KDE Development Platform.
Project Page | https://projects.kde.org/projects/kde/kdebase/konsole |
Easy Repository | git clone kde:konsole.git |
Full Repository | git clone git://anongit.kde.org/konsole.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
KDE SDK
The KDE SDK Module is not strictly speaking part of the KDE Development Platform, but it contains many useful tools and scripts that make developing KDE Software a lot easier and so is recommended to always be built or installed.
Project Page | http://websvn.kde.org/trunk/KDE/kdesdk/ |
Easy Repository | svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/ |
Full Repository | svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/ |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
KDE Workspace
KDE Workspace (kde-workspace) provides desktop, netbook and mobile workspaces..
Project Page | https://projects.kde.org/projects/kde/kdebase/kde-workspace |
Easy Repository | git clone kde:kde-workspace.git |
Full Repository | git clone git://anongit.kde.org/kde-workspace.git |
Requirement | Stable Requires | Unstable Requires | Devel Pkgs? | Details |
---|---|---|---|---|
[http:// Project] | Yes | A library for |
Applications
Here we will try to compile an application, let's say blinken. You can find information about all KDE software at the KDE Projects page
First we will download the code
git clone git://anongit.kde.org/blinken
This will create a directory with blinken's source code inside. We also create a directory to contain the files generated during the build process, and change into that directory.
cd blinken; mkdir build; cd build
Now we'll set up the development system by calling cmake. We're passing two parameters here: CMAKE_INSTALL_PREFIX indicates where the application will be installed, and CMAKE_BUILD_TYPE has the value "debugfull" to tell CMake not to throw away information that is useful for developers.
cmake .. -DCMAKE_INSTALL_PREFIX=<install_path> -DCMAKE_BUILD_TYPE=debugfull
If you just want to install it in the same place as the rest of KDE, you can do
cmake .. -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` -DCMAKE_BUILD_TYPE=debugfull
The moment we were all expecting has arrived, now you can start compiling.
make -j3
The -j3 option tells make to try to do up to three things at once. A good rule for this option is to add one to the number of cores your computer has. In this example, we're assuming you have a dual-core computer (which is fairly common). If you have a quad-core computer, you may want to pass -j5. If you want to do other things on your computer at the same time, you may want to lower the number. Note that if you are not sure you should rather take a lower number.
Some applications can work without installing but that's usually not the case so just do it if you know what you're doing, otherwise you will want to install probably.
make install
If you're installing it to a directory where the owner is root, then you'll probably need some extended privileges to install. That's not the only option, though. You can create a specific install directory by pointing the PATH and KDEDIRS variables to it, more information here: Getting_Started/Build/Environment