CMake from Git

You need a recent version of CMake for KDE Frameworks 5. However, newer versions cause issues with kcoreaddons, namely that not all the headers are installed. Kitware hosts a nightly binary snapshot if you want to skip building it (scroll to the bottom to get the latest). Alternatively you can build it straight from their git:

Choose an installation prefix, for instance

$ export KF5=$HOME/kf5

To avoid repeating the command you can append the above line to the ~/.bashrc file and then run this command from the currently running shells:

Build KDE frameworks

Current state of the KDE frameworks exist in multiple repositories, and needs an updated Qt5 and extra-cmake-modules . Some Frameworks are dependant on eachother, so they must be built in the following order as shown below.

khtml

Debugging options:
The default debug setting is RelWithDebInfo which is suitable for most developers. If you are debugging frameworks and cannot trace the code, you can set CMAKE_BUILD_TYPE to "DebugFull" to get a slower build but with even more verbose debugging (backtrace) information. For this replace -DCMAKE_BUILD_TYPE=RelWithDebInfo in the above cmake command with -DCMAKE_BUILD_TYPE=DebugFull.

Updating the already built framework:
If the source code has been checked from a branch, it is possible to update the source code with newly added changes and build again. Usually only changing parts will be built, so this operation would be faster than building the source code from scratch.

plasma-framework

The Plasma libraries and runtime components have moved into a new repository: plasma-framework. To get libplasma and the QML support for Plasma, after building kdelibs as shown above, execute the following commands:

kde-workspace & Friends

Plasma-based components such as the code in the kde-workspace repo is being ported inside those repositories in the frameworks-scratch branch. This works for the kde-workspace, kdeplasma-addons, plasmate and kdeexamples repositories. You can install whatever is already ported and enabled using the following commands: