Archive:Getting Started/Build/KDE4 (zh CN)

From KDE TechBase
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Template:I18n/Language Navigation Bar (zh CN) Template:TutorialBrowser (zh CN)

摘要

这份教程介绍了一种使从SVN主干获取的KDE在Linux/BSD系统上运行的方法。也有其他如FreeBSD, Windows, Mac OS XSolaris等系统的教程。本教程将创建一个特殊的使用者:kde-devel,用来执行 KDE trunk。一方面,这使得其他使用者可以继续使用其他 KDE 版本。另一方面,测试特殊的全系统程序代码,如 KDE 显示管理员是不可能的。这里有一个教程设定 KDE 4 trunk 在 virtual machine 上

这份教程通篇使用了"bash shell"。

Note
当“周一”提交了重大的修改时,发生构建错误的风险会很大。可以通过Dashboard报告意料之外的破坏。非常欢迎大家修复失败的模块。


所需软件

首先你必须安装以下软件,你才能成功完成这份教程:

  • 来自gcc项目的gcc和g++, 最好是4.1或更高的版本。
  • svn(Subversion客户端)
  • pkg-config
  • X11和OpenGL的开发库及头文件
  • libjpeg、libpng、libungif、libxml2和libxslt的开发库及头文件
  • makeobj脚本。可以做为kdesdk-scripts(debian)或类似的软件包的部件来安装,或者直接从WebSVN下载该软件本身。
  • shared-mime-info软件包,是KDE现在使用的freedesktop MIME标准。

你也许还需要安装以下软件:

  • bash

为KDE4开发创建一个用户账户

Note
一些人喜欢为KDE 4使用一个单独的用户帐户(例如一个旧的bug可能会误删除文件),并且后面的这些指令都是以这种方式进行的。

使用一个单独的用户帐户做任何事情都是很有效率的,有关细节请参考在KDE4中使用脚本提高生产率

你还可以遵循下面的指令,但并不把这些环境变量保存到你的.bashrc中,请把他们放到一个单独的文件中,以备你在切换到KDE 4环境时使用。


选项1:命令行

Note
在某些系统上,新用户的配置在默认情况下使用/bin/sh。使用 /bin/sh 非常不方便工作,您可能需要更改为 /bin/bash 或其他shell。 在 Ark Linux 和 Fedora,你可以用-s /bin/bash切换 /bin/shbash


useradd -m kde-devel -s /bin/bash
passwd kde-devel
Warning
新的 kde-devel 使用者不会自动加入到所有的使用者群组,因此还不够完整,无法执行 sudo 等。编辑您的 /etc/group 文件加入 kde-devel 使用者到所有您需要的群组(可能是您的普通使用者已经分配的群组)。


选项2:使用KControl

如果你已经安装了KDE3,你可以使用KDE控制中心里的用户管理模块来替代上述的命令添加用户。

设置环境

从你的普通账户下拷贝~/.bashrc到新的kde-devel账户下。然后,把.bashrc示例的内容复制并且粘贴到~kde-devel/.bashrc。如果你不能使用makeobj命令,请把例子中的alias make=makeobj这一行注释掉。此外,您可以下载 kde-sdk 軟件包(或执行 subversion checkout)和含入 kde-sdk/scripts/目录在您的 path。您可能还需要修改 path,以确保它不包括您的KDE3 的路径。另外,如果你想使用 KDevelop 开发 KDE 4 应用程序您可能要给 cmake 指令加入 -GKDevelop3 参数(以让 CMake 生成 KDevelop 的项目文件,这将有助于避免在未来的重建,请见这里)。

这样就可以访问本教程中所使用的如cmakekde这类命令,同时保证了Qt、KDE、CMake文件的正确的路径。

更多的信息,请阅读在 KDE4 中用脚本来提升效率

切换到新用户

切换到用户kde-devel:(不要忘了输入横线)

su - kde-devel
Note
如果 ssh 指令无效,请查看启动 KDE 4 应用程序


开发用户的shell

在有些系统上,新用户被默认配置使用/bin/sh。如果你的系统不是这样,请跳过这一节。使用/bin/sh非常不方便,你可能希望转换到/bin/bash或其他的shell。

选项1:作为kde-devel用户

如果你没有root特权,同时你的系统支持使用chsh程序来转换你自己的shell,那你可以尝试使用这条命令来把你的shell转换到/bin/bash

chsh -s /bin/bash kde-devel

选项2:作为root用户

如果你的系统带有usermod程序,你可以以root身份运行以下命令:usermod -s /bin/bash kde-devel。另一个选择是以root身份使用vipw程序安全的编辑你的/etc/passwd。在文件中找到“kde-devel”,将行尾的“/bin/sh”改为“/bin/bash”。保存你的修改并退出。

新的shell将在你再次使用kde-devel用户登录时自动启动。

发行版的必需軟件包

从原始码建构 kde4 的必需軟件包在不同的发行版也不同。您的发行版指示如下:

您的下一个编译步骤取决于发行版提供的套件包。

编译 kde-qt 等

如果您不希望使用由发行版提供的軟件包,您可以自己编译,如 Qt。建构包括 CMake、Qt4(kde-qt)和 kdesupport 依赖的指示在建构的事先需要页面。请注意,automoc、phonon、strigi、soprano 以及其他一些 kdesupport 中的东西,如果您有这些东西缺失的错误,你需要取得 kdesupport。

建构 KDE 给开发或稳定使用

下面的命令用于从 trunk 建构最新版的不稳定 KDE。这不应该用在生产环境,但推荐给开发者。

想要建构稳定版本,请访问:

http://techbase.kde.org/Getting_Started/Build/KDE4.x

kdelibs

构建好Qt4和Strigi之后,我们现在可以开始构建KDE的基础库了,如果你使用了上述的.bashrc,里面就会有那些新的功能。

秘诀

cd $KDE_SRC
mkdir KDE && cd KDE
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
cd kdelibs
cmakekde
Tip
如果命令失败,并提示“CMake requires an out of source build directory”,请移除~/src/KDE/kdelibs/CMakeCache.txt,然后再次尝试。


Tip
如果cmakekde还输出同样的错误,那试试这个:
cd
cmake -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull DKDE4_BUILD_TESTS=ON \
~/src/KDE/kdelibs
make
make install


发生了什么

我们先进入源文件的根目录(第1行),然后执行make并进入KDE目录(第2行)。使用subversion下载kdelibs的源码(第3行),进入新的~/src/KDE/kdelibs目录(第4行),并开始构建(第5行)。这将使我们在构建完成后仍留在kdelibs的构建目录里。

Tip
在这里你的系统上可能会缺少某些依赖关系!可以通过cmakekde的输出观察到这些缺少的依赖关系。你可能希望先执行cmake ~/src/KDE/MODULE_NAME来编译一些kde模块(比如kdelibs、kdepimlibs等)


附加的KDE特有CMake模块

kdelibs/cmake/modules/中有一些构建KDE4应用所需的附加CMake模块,它们会随kdelibs同时安装。

疑难解答

如果你在编译kdelibs时遇到问题,请先确认所需软件中提到的软件是否已能正确安装运行。其他的可能包括:

  • 如果你得到错误信息说“Please create a separate build directory and run 'cmake path_to_kdelibs [options]' there.”,那么你需要在运行cmakekde之前改变你的构建目录(例:cs KDE/kdelibs && cb && cmakekde
  • 如果找不到Qt或者找到了错误版本的Qt,请确认路径中的第一个qmake就是你需要的qmake。
  • 如果还是有问题,尝试CMake make-option --keep-going
  • 这里你需要libungif库,不然你将得到象这样的错误信息“Could NOT find GIF”。
  • Qt-4.3升级:如果你在kjsembed中得到关于QScriptEngine的链接错误,编辑kdelibs中的CMakeCache.txt并移除关于QT_QTUITOOLS_LIBRARY的那些行,然后再次输入make(这个静态库有新的依赖关系,需要运行cmake的代码添加它运行所需要的依赖)。

kdepimlibs

kdelibs之后,kdebase之前,你需要构建和安装kdepimlibs

秘诀

cs KDE
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepimlibs
cd kdepimlibs
cmakekde

发生了什么

我们先进入KDE源码目录(第1行)。使用subversion下载kdepimlibs的源码(第2行),进入新的~/src/KDE/kdepimlibs目录(第3行),并开始构建(第4行)。这将使我们在构建完成后仍留在kdepimlibs的构建目录里。

kdebase

一些kioslaves需要kdebase。

cs KDE
svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase
cd kdebase
cmakekde

疑难解答

如果你在编译kdebase时遇到问题:

  • 请确认你安装了libxss的头文件。(如果你没有这些头文件,通常你会得到“undefined references on xscreensaver objects”)
  • 那个meinproc4必须放到/home/kde-devel/kde/bin/meinproc4
  • 如果cmakekde无法找到kdepimlibs的路径,请编辑$KDE_BUILD/kdebase/CMakeCache.txt并手工设置KDEPIMLIBS_INCLUDE_DIR:PATH=$KDE_BUILD/kdepimlibs
  • 如果你得到错误说“Please set the following variables: X11_XTest_LIB(ADVANCED)”, 请安装Xtst的开发包。有些系统上,这个包独立于xext,并取名为x11proto-xext-dev或者libxtst-dev。在安装完软件包后,你可能需要移除构建目录下的CMakeCache.txt。
  • 和“X11_Xinerama_LIB (ADVANCED)”一样,你需要安装xinerama的开发包
  • 如果你得到错误说“Please set the following variables: FONTCONFIG_INCLUDE_DIR, FONTCONFIG_LIBRARIES (ADVANCED)”,那么你需要安装libfontconfig。

生成本地API文档

尽管我们在api.kde.org上提供了KDE的API文档,在你的硬盘上保存一份副本往往也是有必要的,例如你想要通过KDevelop浏览这些文档或你无法上网时。

注意,生成API文档需要几个小时并占用差不多500M的磁盘空间。文档的生成通过kdelibs/doc/api下的一个脚本完成,运行这个脚本你需要doxygen

为了构建kdelibs的API文档,请输入下列命令:

cs KDE
mkdir apidox
cd apidox
../kdelibs/doc/api/doxygen.sh ../kdelibs/

成功了!

你现在可以使用构建kdebase一样的方法构建其他svn模块,运行并测试KDE4或者编写你自己的补丁和应用程序。

关于如何在你的新的KDE4环境下开始工作,请阅读启动KDE4环境和应用