Getting Started/Build/Historic/KDE4: Difference between revisions

From KDE TechBase
(Created page with '== Build Recipes == The recipes provided here should be used when following the Build pages for KDE Software. These recipes will not be repeated in the Build pages, only variat...')
 
(→‎Requirements: merge in other relevant information from the original page)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Build Recipes ==
== Build Recipes ==


The recipes provided here should be used when following the Build pages for KDE Software.  These recipes will not be repeated in the Build pages, only variations from the standard recipe will be documented, usually just the git or svn repository address, but sometimes also additional configuration options.
=== Git Unstable Master ===


The '''Easy Recipe''' relies on you setting up your environment according to the KDE recommendations.  This will give you many shortcuts to save on typing.  See the [[Getting_Started/Build/Environment|Build Environment]] section on how to do this.
This will be the most commonly used version of the Full Recipe.


The '''Full Recipe''' is provided for those who wish to control their own build or want to see the full steps required, and don't mind lots of typing.
  cd <your source root directory>
 
  git clone git://anongit.kde.org/<module>.git
In Git many KDE Modules have been split up into separate Projects for each Application or Library. Putting all the Git Projects into the same source directory would get very messy. To help keep everything easy to update the recipe recommends you organize the Projects into separate sub-directories for each Module.
  cd <your build root directory, or the module source dir>
 
  mkdir <your module build dir>
For Subversion the repository address changes if you have a developers account or if you want a stable release.
  cd <your module build dir>
 
cmake <path to your module source dir>
For Git the repository address does not change if you have a developers account or if you want a stable release, you always clone the project from anongit. However a stable build requires some extra steps.
      \ -DCMAKE_INSTALL_PREFIX=$KDEDIR
 
      \ -DCMAKE_BUILD_TYPE=debugfull
=== Easy Recipe ===
      \ -DKDE4_BUILD_TESTS=TRUE
 
nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores
==== Git Unstable Master ====
  make install
This will be the most commonly used version of the Easy Recipe.
 
  cd $KDESRC/master/<module>
  git clone kde:<project>.git
  cd <project>
  cmakekde


==== Git Unstable Branch ====
=== 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.


  cd $KDESRC/master/<module>/<project>
  cd <your project source directory>
  git branch --track <branch> origin/<branch>
  git branch --track <branch> origin/<branch>
  git checkout <branch>
  git checkout <branch>
  cmakekde
  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 ====
=== Git Stable Branch ===


This recipe creates a new clone of the Project and sets it to use a stable branch.  This may be wasteful of disk space if you already have an Unstable clone, but it does allow you to work on Unstable and Stable at the same time without excessive management or rebuilding.  It also closely mirrors how Subversion works.
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 $KDESRC/<stable-branch>/<module>
  cd $KDE_SRC/master/<module>
  git clone kde:<project>.git
git-new-workdir <project> $KDE_SRC/<stable-branch>/<module>/<project> <stable-branch>
  cd <project>
cd <your build branch directory, or the module source dir>
  git branch --track <stable-branch> origin/<stable-branch>
  mkdir <your module build dir>
  git checkout <stable-branch>
  cd <your module build dir>
  cmakekde
  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 ===
=== Subversion Unstable ===


  cd $KDESRC/master
  cd <your source root directory>
  svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/<module>
  svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/<module>
  cd <module>
  cd <project>
  cmakekde
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:
If you have a developer account the Subversion command will be:
Line 57: Line 76:
=== Subversion Stable ===
=== Subversion Stable ===


  cd $KDESRC/<stable-branch>
  cd <your source branch directory>
  svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/<branch>/<module>
  svn checkout svn://anonsvn.kde.org/home/kde/branches/KDE/<branch>/<module>
  cd <module>
  cd <project>
  cmakekde
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:
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>
  svn checkout svn+ssh://<username>@svn.kde.org/home/kde/branches/KDE/<branch>/<module>


=== Full Stable Git Recipe ===
=== 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.
 
{| 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>
  cd <your source root directory>
  git clone git://anongit.kde.org/<module>.git
  svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/
  cd <your build root directory, or the module source dir>
  cd <your build root directory, or the module source dir>
  mkdir <your module build dir>
  mkdir <your module build dir>
Line 76: Line 286:
       \ -DCMAKE_BUILD_TYPE=debugfull
       \ -DCMAKE_BUILD_TYPE=debugfull
       \ -DKDE4_BUILD_TESTS=TRUE
       \ -DKDE4_BUILD_TESTS=TRUE
  nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores
  make  
make insta
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.

Build Requirements
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

Project Build 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


KDE Libraries Build Requirements
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


KDE PIM Libraries Build Requirements
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


Project Build Requirements
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


Project Build Requirements
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


Kate Build Requirements
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


Konsole Build Requirements
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/


KDE SDK Build Requirements
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


KDE Workspace Build Requirements
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