Spec-Zone.ru › CMake

FindKDE4

Note

This module is specifically intended for KDE version 4, which is obsolete and no longer maintained. For modern application development using KDE technologies with CMake, use a newer version of KDE, and refer to the KDE documentation.

Finds the KDE 4 installation:

find_package(KDE4 [...])

This module is a wrapper around the following upstream KDE 4 modules:

FindKDE4Internal.cmake

Upstream internal module, which finds the KDE 4 include directories, libraries, and KDE-specific preprocessor tools. It provides usage requirements for building KDE 4 software and defines several helper commands to simplify working with KDE 4 in CMake.

KDE4Macros.cmake

Upstream utility module that defines all additional KDE4-specific commands to use KDE 4 in CMake. For example: kde4_automoc(), kde4_add_executable(), kde4_add_library(), kde4_add_ui_files(), kde4_add_ui3_files(), kde4_add_kcfg_files(), kde4_add_kdeinit_executable(), etc.

Upstream KDE 4 modules are installed by the KDE 4 distribution package in $KDEDIRS/share/apps/cmake/modules/. This path is automatically appended to the CMAKE_MODULE_PATH variable when calling find_package(KDE4), so any additional KDE 4 modules can be included in the project with include(). For example:

KDE4Defaults.cmake

Upstream internal module that sets some CMake options which are useful, but not required for building KDE 4 software. If these settings should be used, include this module after finding KDE 4:

find_package(KDE4)
include(KDE4Defaults)

For usage details, refer to the upstream KDE 4 documentation. For example, at the top of the FindKDE4Internal module a complete documentation is available for all variables and commands these modules provide.

Result Variables

This module defines the following variables:

KDE4_FOUND

Boolean indicating whether KDE 4 was found. This variable is set by the upstream FindKDE4Internal module.

Hints

This module accepts the following variables before calling the find_package(KDE4):

ENV{KDEDIRS}

Environment variable containing the path to the KDE 4 installation.

KDE 4 is searched in the following directories in the given order:

  • CMAKE_INSTALL_PREFIX variable
  • KDEDIRS environment variable
  • /opt/kde4 path

Examples

Example: Basic Usage

Finding KDE 4 as required and using it in CMake:

find_package(KDE4 REQUIRED)

set(sources main.cpp mywidget.cpp mypart.cpp)

# The kde4_*() commands are provided by the KDE4Macros module, which is
# included automatically by FindKDE4, if KDE4 is found:
kde4_automoc(${sources})
kde4_add_executable(example ${sources})

target_include_directories(example PRIVATE ${KDE4_INCLUDES})
target_link_libraries(example PRIVATE ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS})

install(TARGETS example DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES kfoo.desktop DESTINATION ${XDG_APPS_DIR})

Example: Full Featured Example

In the following example this module is used to find KDE 4 installation.

project(kfoo)

find_package(KDE4 REQUIRED)

# Append path from where to include local project modules if any:
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

include_directories(${KDE4_INCLUDE_DIRS})
add_definitions(${KDE4_DEFINITIONS})

set(sources main.cpp myappl.cpp view.cpp)

# If Qt designer UI files version 3 or 4 are available add them to the
# sources variable:
kde4_add_ui_files(sources maindialog.ui logindialog.ui)
kde4_add_ui3_files(sources printerdlg.ui previewdlg.ui)

# If there are files for the kconfig_compiler add them this way:
kde4_add_kcfg_files(sources settings.kcfg)

# When everything is listed, probably automoc is wanted:
kde4_automoc(${sources})

# Finally, specify what to build:
kde4_add_executable(kfoo ${sources})

The kde4_add_executable() command is a slightly extended version of the CMake command add_executable(). Additionally, it does some more RPATH handling and supports the KDE4_ENABLE_FINAL variable. The first argument is the name of the executable followed by a list of source files. If a library needs to be created instead of an executable, the kde4_add_library() can be used. It is an extended version of the add_library() command. It adds support for the KDE4_ENABLE_FINAL variable and under Windows it adds the -DMAKE_KFOO_LIB to the compile flags.

find_package(KDE4 REQUIRED)

# ...

kde4_add_library(kfoo ${sources})

# Optionally, set the library version number if needed:
set_target_properties(kfoo PROPERTIES VERSION 5.0.0 SOVERSION 5)

KDE is very modular, so if a KPart, a control center module, or an ioslave needs to be created, here's how to do it:

find_package(KDE4 REQUIRED)
# ...
kde4_add_plugin(kfoo ${sources})

Now, the application/library/plugin probably needs to link to some libraries. For this use the standard target_link_libraries() command. For every KDE library there are variables available in the form of KDE4_FOO_LIBS. Use them to get also all depending libraries:

target_link_libraries(kfoo ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS})

Example: The kdeinit Executable

In the following example, the so called kdeinit executable is created. The kde4_add_kdeinit_executable() command creates both an executable with the given name and a library with the given name prefixed with kdeinit_. The target_link_libraries() command adds all required libraries to the kdeinit_kbar library, and then links the kbar against the kdeinit_kbar:

find_package(KDE4 REQUIRED)

# ...

kde4_add_kdeinit_executable(kbar ${kbarSources})
target_link_libraries(kdeinit_kbar ${KDE4_KIO_LIBS})
target_link_libraries(kbar kdeinit_kbar)

install(TARGETS kbar DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS kdeinit_kbar DESTINATION ${CMAKE_INSTALL_LIBDIR})

Example: Removing Compile Definitions

Sometimes, a default compile definition passed to the compiler needs to be removed. The remove_definitions() command can be used. For example, by default, the KDE4 build system sets the -DQT_NO_STL flag. If the project code uses some of the Qt STL compatibility layer, this flag should be removed:

find_package(KDE4 REQUIRED)

add_definitions(${KDE4_DEFINITIONS})

# ...

remove_definitions(-DQT_NO_STL)

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/FindKDE4.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API