FindKDE4

注意

此模块专门用于 KDE 4 版本,该版本已过时且不再维护。对于使用 CMake 和 KDE 技术进行现代应用程序开发,请使用新版本的 KDE,并参考 KDE 文档

查找 KDE 4 安装

find_package(KDE4 [...])

此模块是以下上游 KDE 4 模块的包装器

FindKDE4Internal.cmake

上游内部模块,用于查找 KDE 4 的包含目录、库和 KDE 特定的预处理器工具。它提供了构建 KDE 4 软件的使用要求,并定义了几个辅助命令以简化在 CMake 中使用 KDE 4 的工作。

KDE4Macros.cmake

上游实用模块,定义了在 CMake 中使用 KDE 4 的所有附加 KDE4 特定命令。例如:kde4_automoc()kde4_add_executable()kde4_add_library()kde4_add_ui_files()kde4_add_ui3_files()kde4_add_kcfg_files()kde4_add_kdeinit_executable() 等。

上游 KDE 4 模块由 KDE 4 发行版包安装在 $KDEDIRS/share/apps/cmake/modules/。在调用 find_package(KDE4) 时,此路径会自动追加到 CMAKE_MODULE_PATH 变量,因此可以使用 include() 命令在项目中包含任何额外的 KDE 4 模块。例如:

KDE4Defaults.cmake

上游内部模块,设置了一些有用的 CMake 选项,但不是构建 KDE 4 软件所必需的。如果应使用这些设置,请在找到 KDE 4 后包含此模块。

find_package(KDE4)
include(KDE4Defaults)

有关用法详情,请参阅上游 KDE 4 文档。例如,在 FindKDE4Internal 模块的顶部,提供了这些模块提供的所有变量和命令的完整文档。

结果变量

此模块定义了以下变量

KDE4_FOUND

一个布尔值,指示是否找到 KDE 4。此变量由上游 FindKDE4Internal 模块设置。

提示

此模块在调用 find_package(KDE4) 之前接受以下变量

ENV{KDEDIRS}

包含 KDE 4 安装路径的环境变量。

KDE 4 按以下顺序在以下目录中搜索

示例

示例:基本用法

将 KDE 4 查找为必需项并在 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})

示例:kdeinit 可执行文件

在以下示例中,创建了所谓的 kdeinit 可执行文件。kde4_add_kdeinit_executable() 命令会创建一个给定名称的可执行文件和一个以 kdeinit_ 为前缀的给定名称的库。target_link_libraries() 命令将所有必需的库添加到 kdeinit_kbar 库中,然后将 kbar 链接到 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})

示例:移除编译定义

有时,需要移除传递给编译器的默认编译定义。可以使用 remove_definitions() 命令。例如,默认情况下,KDE4 构建系统会设置 -DQT_NO_STL 标志。如果项目代码使用了 Qt STL 兼容层的一部分,则应移除此标志。

find_package(KDE4 REQUIRED)

add_definitions(${KDE4_DEFINITIONS})

# ...

remove_definitions(-DQT_NO_STL)