Archive:Getting Started/Set up KDE 4 for development (zh CN): Difference between revisions
m (→开始KDE4的应用程序和会话) |
m (AnneW moved page Getting Started/Set up KDE 4 for development (zh CN) to Archive:Getting Started/Set up KDE 4 for development (zh CN) without leaving a redirect: Obsolete) |
||
(27 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
Line 6: | Line 6: | ||
name=为后续开发设置KDE 4| | name=为后续开发设置KDE 4| | ||
pre=[[Getting_Started/Build/ | pre=[[Getting_Started/Build/KDE4_%28zh_CN%29|构建KDE 4]]| | ||
next=[[Development| | next=[[Development|其他开发相关主题]]| | ||
}} | }} | ||
{{note|本文假定您已经基于[[Getting Started/Build/ | {{note|本文假定您已经基于[[Getting Started/Build/KDE4_(zh_CN)|从源代码构建KDE4]]的介绍成功构建了kdelibs、kdepimlibs和kdebase}} | ||
== 启动KDE4的应用程序和会话== | |||
当您开始KDE4的开发时,通常您可以有这样三个选择: | |||
* 您可以在桌面环境里[[Getting_Started/Set_up_KDE_4_for_development#Launching_KDE_4_apps_(zh_CN)|以独立于其他应用程序的方式运行KDE4应用程序]]。 | |||
* 您可以在桌面环境里[[Getting_Started/Set_up_KDE_4_for_development#Nested_KDE_4_session_(zh_CN)|嵌入一个KDE4会话]]。 | |||
* 您可以[[Getting_Started/Set_up_KDE_4_for_development#Solitary_KDE_4_session_(zh_CN)|将KDE4作为您唯一的桌面环境]]。 | |||
随后的章节描述的就是这三种选择。 | 随后的章节描述的就是这三种选择。 | ||
{{Note| | {{Note| | ||
如果您在运行任何KDE4应用程序时遇到错误,例如: | |||
Qt: Session management error: Could not open network socket | Qt: Session management error: Could not open | ||
QMutex::lock: Deadlock detected in thread -1241241936 | network socket | ||
(会话管理错误:打不开套接字) | |||
QMutex::lock: Deadlock detected in thread | |||
-1241241936 | |||
(在线程-1241241936中侦测到死锁) | |||
或者卡在运行startkde的时候,请阅读[http://www.nabble.com/QMutex::lock:-Deadlock-detected---running-KDE4-apps-%22using-the-normal-shell%22-t3584446.html 这篇文章]来绕过这个问题。 | |||
}} | }} | ||
=== | === 启动KDE4应用程序 === | ||
==== | ==== 在普通的shell里使用sux ==== | ||
使用这个方法需要'''sux'''工具 (http://fgouget.free.fr/sux/sux-readme.shtml)。'''sux'''工具在大多数发行版上是可用的。当然你也可以参考下一篇 ''normal shell without sux'' 的文档。'''sux'''可以让您用一种干净而简洁的方式在切换到其他用户帐号时隐式地管理X转发(认证和显示输出)。 | |||
登录时请输入 <syntaxhighlight lang="bash">sux - kde-devel</syntaxhighlight> | |||
您的{{path|[[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc_(zh_CN)|.bashrc]]}}脚本将帮助您正确地设置全部环境变量和其他相关配置。如果要启动一个应用程序,只需简单地输入程序名称;例如<syntaxhighlight lang="bash">kwrite</syntaxhighlight> | |||
{{Note| | {{Note| | ||
如果您遇到诸如MIME类型丢失的错误,请尝试: | |||
* | * 运行 <syntaxhighlight lang="bash">unset XDG_DATA_DIRS ; kbuildsycoca4</syntaxhighlight> | ||
}} | }} | ||
==== | ==== 在shell里不用SUX ==== | ||
启动KDE 4应用程序最简单的方法是用<tt>su</tt>作为<tt>kde-devel</tt>用户登录,然后从命令行简单启动。登录,输入 | |||
< | <syntaxhighlight lang="bash">su - kde-devel</syntaxhighlight>, | ||
然后,输入你的密码 | |||
< | <syntaxhighlight lang="bash">export DISPLAY=:0</syntaxhighlight> | ||
{{Note| | |||
{{Note|导入<tt>DISPLAY</tt> 变量是必须的,这样KDE4程序才能在KDE3桌面显示并运行.}} | |||
所有的环境变量和其他设置应该参照下面的连接设置正确 {{path|[[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc_(zh_CN)|.bashrc]]}}. 如果想要启动一个程序其实很简单,只是需要输入程序的名字就可以了; 例如 <syntaxhighlight lang="bash">kwrite</syntaxhighlight> | |||
{{Note| | {{Note| | ||
如果你得到丢失mimetypes此类的错误, 试一试下面的方法: | |||
* run < | * run <syntaxhighlight lang="bash">unset XDG_DATA_DIRS ; kbuildsycoca4</syntaxhighlight> | ||
}} | }} | ||
{{Note| | {{Note| | ||
如果你得到不能连接X服务器的错误, 注意一普通KDE 3 用户执行: | |||
< | <syntaxhighlight lang="bash">sudo xhost +local:kde-devel</syntaxhighlight> | ||
;确保应用程序可以连接到当前 X 会话。 | |||
Although your X server should accept incoming TCP connections, this is often switched off as a distribution default (like with Kubuntu Feisty). When using <tt>kdm</tt> you must edit <tt>/etc/kde3/kdm/kdmrc</tt> as root and make sure it does not contain: | Although your X server should accept incoming TCP connections, this is often switched off as a distribution default (like with Kubuntu Feisty). When using <tt>kdm</tt> you must edit <tt>/etc/kde3/kdm/kdmrc</tt> as root and make sure it does not contain: | ||
< | <syntaxhighlight lang="text">ServerArgsLocal=-nolisten tcp</syntaxhighlight> | ||
Once you have fixed this, you will need to restart your X server. The <tt>xhost</tt> command should no longer return an "unable to open display" error. | Once you have fixed this, you will need to restart your X server. The <tt>xhost</tt> command should no longer return an "unable to open display" error. | ||
For convenience, you should put this in the Autostart of your regular user. To do this, create a new file in the <tt>$HOME/.kde/Autostart</tt> directory of your regular user with the following content: | For convenience, you should put this in the Autostart of your regular user. To do this, create a new file in the <tt>$HOME/.kde/Autostart</tt> directory of your regular user with the following content: | ||
< | <syntaxhighlight lang="bash"> | ||
#! /bin/sh | #! /bin/sh | ||
xhost +local:kde-devel | xhost +local:kde-devel | ||
</ | </syntaxhighlight> | ||
If you'd like to find out more about the '''security issues''' involved with using <tt>xhost</tt> | 确保新文件是可执行的,对他执行<tt>chmod +x</tt>。 | ||
If you'd like to find out more about the '''security issues''' involved with using <tt>xhost</tt>,详见[http://bau2.uibk.ac.at/matic/xsecur.htm 此文] | |||
}} | }} | ||
==== | ==== 使用SSH ==== | ||
The simplest way to run a KDE 4 application with SSH in your current desktop environment is to get an X-aware shell prompt as the <tt>kde-devel</tt> user like this: | The simplest way to run a KDE 4 application with SSH in your current desktop environment is to get an X-aware shell prompt as the <tt>kde-devel</tt> user like this: | ||
< | <syntaxhighlight lang="bash">ssh -X kde-devel@localhost</syntaxhighlight> | ||
现在可以按正常方法启动KDE应用了,例如: | |||
< | <syntaxhighlight lang="bash">kwrite</syntaxhighlight> | ||
The two lines can be conveniently combined: | The two lines can be conveniently combined: | ||
< | <syntaxhighlight lang="bash">ssh -X kde-devel@localhost kwrite</syntaxhighlight> | ||
{{Note| | {{Note| | ||
如果碰到问题,参考上面的出错处理。 | |||
}} | }} | ||
===== | ===== 无密码登录 ===== | ||
使用前,无密码登录必须要有相应设置。以普通桌面用户运行下列命令: | |||
< | <syntaxhighlight lang="bash">ssh-keygen -t rsa</syntaxhighlight> | ||
连续三次回车以接受这个路径{{path|~/.ssh/id_rsa}},不填任何东西。Now, copy the single line in {{path|~/.ssh/id_rsa.pub}} that's printed after running this command: | |||
< | <syntaxhighlight lang="bash">cat ~/.ssh/id_rsa.pub</syntaxhighlight> | ||
After that line is copied, <tt>ssh</tt> back into the <tt>kde-devel</tt> user and put the copied line in the file {{path|$HOME/.ssh/authorized_keys}}: | After that line is copied, <tt>ssh</tt> back into the <tt>kde-devel</tt> user and put the copied line in the file {{path|$HOME/.ssh/authorized_keys}}: | ||
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \ | ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \ | ||
$HOME/.ssh/authorized_keys | $HOME/.ssh/authorized_keys | ||
Paste in the line, save the file, and quit KWrite. Now try running KWrite again with the same SSH command; you shouldn't have to enter a password anymore: | Paste in the line, save the file, and quit KWrite. Now try running KWrite again with the same SSH command; you shouldn't have to enter a password anymore: | ||
< | <syntaxhighlight lang="bash">ssh -X kde-devel@localhost $HOME/kde/bin/kwrite</syntaxhighlight> | ||
{{ | {{Warning|无密码SSH登录有一定 '''安全隐患''',取保你<tt>~/.ssh/id_rsa</tt>文件的安全性,要限制接触可以做如下操作: | ||
< | <syntaxhighlight lang="bash">chmod og-xrw ~/.ssh/id_rsa</syntaxhighlight>(创建前要有些读写权限)}} | ||
===== | ===== SSH桌面文件 ===== | ||
If you want to be able to launch apps more easily than running them with an SSH command from the command line, one way is to create <tt>.desktop</tt> files that <tt>ssh</tt> into the other account. | If you want to be able to launch apps more easily than running them with an SSH command from the command line, one way is to create <tt>.desktop</tt> files that <tt>ssh</tt> into the other account. | ||
{{Note|This will only be useful if your desktop environment supports .desktop files, but at least KDE and GNOME do.}} | {{Note|This will only be useful if your desktop environment supports .desktop files, but at least KDE and GNOME do.}} | ||
You can start with an existing .desktop file as a template (like one from your desktop) or you can make one from scratch. The main idea is to prefix the command being run with this string: | You can start with an existing .desktop file as a template (like one from your desktop) or you can make one from scratch. The main idea is to prefix the command being run with this string: | ||
< | <syntaxhighlight lang="bash"> | ||
ssh -X kde-devel@localhost $HOME/kde/bin/ | ssh -X kde-devel@localhost $HOME/kde/bin/ | ||
</ | </syntaxhighlight> | ||
一个运行KWrite的(.desktop)文件通常有下列内容: | |||
< | <syntaxhighlight lang="ini"> | ||
[Desktop Entry] | [Desktop Entry] | ||
Categories=Qt;KDE;TextEditor; | Categories=Qt;KDE;TextEditor; | ||
Line 132: | Line 140: | ||
X-KDE-SubstituteUID=false | X-KDE-SubstituteUID=false | ||
X-KDE-Username= | X-KDE-Username= | ||
</ | </syntaxhighlight> | ||
{{tip|Apps launched using SSH like this don't trigger the correct launch responses, so you probably want to disable "launch feedback" for your .desktop files}} | {{tip|Apps launched using SSH like this don't trigger the correct launch responses, so you probably want to disable "launch feedback" for your .desktop files}} | ||
Line 138: | Line 146: | ||
{{note|In order to create a .desktop file for a KDE 4 app by using this pattern, the app's package will have to have been installed into <tt>~/kde/bin</tt> using the <tt>cmakekde</tt> command}} | {{note|In order to create a .desktop file for a KDE 4 app by using this pattern, the app's package will have to have been installed into <tt>~/kde/bin</tt> using the <tt>cmakekde</tt> command}} | ||
=== | === 加载KDE 4会话 === | ||
==== | ==== 嵌套 KDE 4会话 ==== | ||
{|align="right" | {|align="right" | ||
|[[image:Snapshot1.png|right|thumb|200px|Nested]] | |[[image:Snapshot1.png|right|thumb|200px|Nested]] | ||
Line 151: | Line 159: | ||
Xephyr :1& | Xephyr :1& | ||
加载KDE: | |||
export DISPLAY=:1 | export DISPLAY=:1 | ||
Line 158: | Line 166: | ||
startkde-modified is a copy of the startkde-script which includes the following lines on the top: | startkde-modified is a copy of the startkde-script which includes the following lines on the top: | ||
< | <syntaxhighlight lang="bash"> | ||
export KDEDIR=`kde4-config --prefix` | export KDEDIR=`kde4-config --prefix` | ||
export LD_LIBRARY_PATH=$KDEDIR/lib | export LD_LIBRARY_PATH=$KDEDIR/lib | ||
export PATH=$KDEDIR/bin/:$PATH | export PATH=$KDEDIR/bin/:$PATH | ||
export KDEHOME=~/.kde4 | export KDEHOME=~/.kde4 | ||
</ | </syntaxhighlight> | ||
可以在KDM上通过Xdmcp协议使用Xephyr,创建一个新的KDE 4连到KDM。 | |||
在Kubuntu上, 可以这么做 | |||
< | <syntaxhighlight lang="ini"> | ||
[Xdmcp] | [Xdmcp] | ||
# Whether KDM should listen to incoming XDMCP requests. | # Whether KDM should listen to incoming XDMCP requests. | ||
# | # 缺省是 true | ||
Enable=false | Enable=false | ||
</ | </syntaxhighlight> | ||
in {{path|/etc/kde3/kdm/kdmrc}} to | in {{path|/etc/kde3/kdm/kdmrc}} to | ||
< | <syntaxhighlight lang="ini"> | ||
[Xdmcp] | [Xdmcp] | ||
# Whether KDM should listen to incoming XDMCP requests. | # Whether KDM should listen to incoming XDMCP requests. | ||
# | # 缺省是 true | ||
Enable=true | Enable=true | ||
</ | </syntaxhighlight> | ||
and adjust your {{path|/etc/kde3/kdm/Xaccess}} to allow your local machine access. Additionally you should make sure to set up a port blocking policy on all external interfaces for the Xdmcp port if you are doing this on a laptop or a PC in an untrusted environment. | and adjust your {{path|/etc/kde3/kdm/Xaccess}} to allow your local machine access. Additionally you should make sure to set up a port blocking policy on all external interfaces for the Xdmcp port if you are doing this on a laptop or a PC in an untrusted environment. | ||
Line 201: | Line 209: | ||
xhost +local:kde-devel | xhost +local:kde-devel | ||
如果没有Xephyr,也可以用Xnest: | |||
Xnest -ac :1& export DISPLAY=:1 | Xnest -ac :1& export DISPLAY=:1 | ||
Line 219: | Line 227: | ||
export DISPLAY=${NESTED_KDE_DISPLAY_BACKUP} | export DISPLAY=${NESTED_KDE_DISPLAY_BACKUP} | ||
如果碰到: | |||
"Call to lnusertemp failed (temporary directories full?). | "Call to lnusertemp failed (temporary directories full?). | ||
Check your installation." | Check your installation." | ||
试试这个: | |||
mkdir /var/tmp/kde-devel-kde4 | mkdir /var/tmp/kde-devel-kde4 | ||
Line 232: | Line 240: | ||
----- | ----- | ||
==== Solitary KDE | ==== Solitary KDE 4会话 ==== | ||
{|align="right" | {|align="right" | ||
|[[image:solitary.png|right|thumb|200px|Solitary]] | |[[image:solitary.png|right|thumb|200px|Solitary]] | ||
|} | |} | ||
运行一个完整的KDE 4桌面会话,you can either start it from the command line as you normally would, with something like this: | |||
X :1 & export DISPLAY=:1 | X :1 & export DISPLAY=:1 | ||
Line 245: | Line 253: | ||
or you can can add it to your login manager. If you are using KDM (or a compatible login manager) this is done by creating a .desktop file in either {{path|`kde-config --prefix`/share/apps/kdm/sessions/}} or in {{path|/usr/share/xsessions/}}. The easiest thing to do is to copy an existing {{path|kde.desktop}} file and name it {{path|kde4.desktop}}. Open this new .desktop file in a text editor and change the <tt>Exec</tt>, <tt>TryExec</tt> and <tt>Name</tt> entries to look something like this: | or you can can add it to your login manager. If you are using KDM (or a compatible login manager) this is done by creating a .desktop file in either {{path|`kde-config --prefix`/share/apps/kdm/sessions/}} or in {{path|/usr/share/xsessions/}}. The easiest thing to do is to copy an existing {{path|kde.desktop}} file and name it {{path|kde4.desktop}}. Open this new .desktop file in a text editor and change the <tt>Exec</tt>, <tt>TryExec</tt> and <tt>Name</tt> entries to look something like this: | ||
< | <syntaxhighlight lang="ini"> | ||
Exec=$HOME/kde/bin/startkde | Exec=$HOME/kde/bin/startkde | ||
TryExec=$HOME/kde/bin/startkde | TryExec=$HOME/kde/bin/startkde | ||
Name=KDE4 | Name=KDE4 | ||
</ | </syntaxhighlight> | ||
Replace {{path|$HOME/kde}} in the example above with the prefix you are installing KDE4 into. | Replace {{path|$HOME/kde}} in the example above with the prefix you are installing KDE4 into. | ||
Line 257: | Line 265: | ||
{{Note|You should have path to 'qdbus' program (usually it is $QTDIR/bin) in your $PATH to login successfully. If it is not there, you'll get an error message "Could not start DBus. Check your installation."}} | {{Note|You should have path to 'qdbus' program (usually it is $QTDIR/bin) in your $PATH to login successfully. If it is not there, you'll get an error message "Could not start DBus. Check your installation."}} | ||
== | == 开发任务 == | ||
=== KDevelop === | === KDevelop === | ||
这里讲述如何用Kdeveloper 3.4 开发KDE 4 的应用。有问题,建议,纠正的话,请在讨论页面提出。 | |||
==== | ==== 前提条件 ==== | ||
You need at least KDevelop 3.4 for this, which is still a KDE 3 application. Versions lower than 3.4 do not have Qt 4 support among other things. The KDE 4 version of KDevelop is not yet ready for serious development. You can get KDevelop at the [http://www.kdevelop.org/index.html?filename=3.4/download.html KDevelop homepage]. Make sure you install KDevelop like all other KDE 3 applications, '''not''' with your ''kde-devel'' user. | You need at least KDevelop 3.4 for this, which is still a KDE 3 application. Versions lower than 3.4 do not have Qt 4 support among other things. The KDE 4 version of KDevelop is not yet ready for serious development. You can get KDevelop at the [http://www.kdevelop.org/index.html?filename=3.4/download.html KDevelop homepage]. Make sure you install KDevelop like all other KDE 3 applications, '''not''' with your ''kde-devel'' user. | ||
安装最新的''GDB'',版本是 6.6.0。 | |||
本地安装kdelibs API文档,里面简述了[[Getting_Started/Build/KDE4#Generating_local_API_documentation|构建指令]]。 | |||
你还需要''ctags'', ''htdig'', ''htmerge'' 和''htsearch''. ''valgrind'' 和''callgrind''也是有用的。 | |||
确保你遵循KDE 4的[[Getting_Started/Build/KDE4|构建指令]]以及一个可用的KDE 4环境。确保一些简单的KDE 4应用如''Konsole''或''KWrite'',可以从命令行构建,用''kde-devel''用户。 | |||
The following steps are all done with the ''kde-devel'' user. You need to login as that user by typing < | The following steps are all done with the ''kde-devel'' user. You need to login as that user by typing <syntaxhighlight lang="bash">su - kde-devel</syntaxhighlight>. | ||
==== | ==== 设置环境 ==== | ||
KDevelop并不与生俱来就支持CMake。但,CMake可以产生KDevelop项目文件,只要在执行''cmake''命令时加上 ''-GKDevelop3''。他会告诉CMake,产生KDevelop项目文件和通用makefiles文件。The best way to do this is to modify your ''cmakekde'' function in your [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|{{path|.bashrc}}]]。改变如下: | |||
< | <syntaxhighlight lang="bash"> | ||
cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \ | cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \ | ||
-DCMAKE_BUILD_TYPE=debugfull&& \ | -DCMAKE_BUILD_TYPE=debugfull&& \ | ||
make && \ | make && \ | ||
make install; | make install; | ||
</ | </syntaxhighlight> | ||
to | to | ||
< | <syntaxhighlight lang="bash"> | ||
cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \ | cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \ | ||
-DCMAKE_BUILD_TYPE=debugfull&& \ | -DCMAKE_BUILD_TYPE=debugfull&& \ | ||
make && \ | make && \ | ||
make install; | make install; | ||
</ | </syntaxhighlight> | ||
After you have done that, re-login so that the changes to the {{path|.bashrc}} file take effect. Then you need to rerun ''cmakekde'' in the (root) build directory of the project you want to work on with KDevelop (if you didn't use ''-GKDevelop3'' on the [[Getting_Started/Build/KDE4#Setting_up_the_environment|building step]]). For example, if you want to work on Konsole, which lives in ''kdebase'', you need to run cmakekde in the {{path|$KDE_BUILD/KDE/kdebase}} directory. This unfortunately completely rebuilds everything, but only once when you change the generator. | After you have done that, re-login so that the changes to the {{path|.bashrc}} file take effect. Then you need to rerun ''cmakekde'' in the (root) build directory of the project you want to work on with KDevelop (if you didn't use ''-GKDevelop3'' on the [[Getting_Started/Build/KDE4#Setting_up_the_environment|building step]]). For example, if you want to work on Konsole, which lives in ''kdebase'', you need to run cmakekde in the {{path|$KDE_BUILD/KDE/kdebase}} directory. This unfortunately completely rebuilds everything, but only once when you change the generator. | ||
Line 298: | Line 306: | ||
A simple way to do this is to add the following function to your {{path|.bashrc}}: | A simple way to do this is to add the following function to your {{path|.bashrc}}: | ||
< | <syntaxhighlight lang="bash"> | ||
function start3app { | function start3app { | ||
mkdir -p /tmp/$USER-kde | mkdir -p /tmp/$USER-kde | ||
Line 312: | Line 320: | ||
source $HOME/.bashrc #Reset environment variables again | source $HOME/.bashrc #Reset environment variables again | ||
} | } | ||
</ | </syntaxhighlight> | ||
The ''PATH'' and ''LD_LIBRARY_PATH'' variables are taken from the KDE 3 user, and they may be different on your system. Type < | The ''PATH'' and ''LD_LIBRARY_PATH'' variables are taken from the KDE 3 user, and they may be different on your system. Type <syntaxhighlight lang="bash">echo $PATH</syntaxhighlight> and <syntaxhighlight lang="bash">echo $LD_LIBRARY_PATH</syntaxhighlight> as normal KDE 3 user to get these values. The above function assumes that KDE 3 is installed in the {{path|/usr}} prefix, as it is the case on Debian-based systems. If your KDE 3 is installed to a different prefix, for example {{path|/opt/kde3}}, you need to change the line setting ''KDEDIR'' accordingly. | ||
Now you should be able to start KDevelop by typing <tt>start3app kdevelop</tt>. Do that now. | Now you should be able to start KDevelop by typing <tt>start3app kdevelop</tt>. Do that now. | ||
{{tip| | {{tip| | ||
可以用<tt>start3app</tt>启动KDE 3应用程序。Useful candidates include ''Kompare'' and ''kdesvn''. | |||
However, you can not start ''KDbg'' this way to debug KDE 4 applications, since then the environment variables for the debugged application are wrong. | However, you can not start ''KDbg'' this way to debug KDE 4 applications, since then the environment variables for the debugged application are wrong. | ||
Line 333: | Line 341: | ||
--> | --> | ||
==== | ==== 设置KDevelop ==== | ||
Now that KDevelop has started, you need to adjust a few settings. Go to ''Settings->Configure KDevelop...->Documentation'' for this. Remove all entries that are not relevant to KDE 4 coding. | Now that KDevelop has started, you need to adjust a few settings. Go to ''Settings->Configure KDevelop...->Documentation'' for this. Remove all entries that are not relevant to KDE 4 coding. | ||
Line 339: | Line 347: | ||
{{note|Although environment variables like $HOME are used in this section, you should replace them with real paths because KDevelop does not resolve environment variables.}} | {{note|Although environment variables like $HOME are used in this section, you should replace them with real paths because KDevelop does not resolve environment variables.}} | ||
点击''Add...'',添加KDELib的API文档。对话框中,用下列设置: | |||
* ''Type'': | * ''Type'': Doxygen文档集 (设为首位) | ||
* ''Location'': {{path|$KDE_SRC/KDE/kdelibs/kdelibs-apidocs/index.html}} | * ''Location'': {{path|$KDE_SRC/KDE/kdelibs/kdelibs-apidocs/index.html}} | ||
添加Qt API文档,用下列设置: | |||
* ''Type'': | * ''Type'': Qt文档集 (设为首位) | ||
* ''Location'': {{path|$HOME/qt-copy/doc/html/qt.dcf}} | * ''Location'': {{path|$HOME/qt-copy/doc/html/qt.dcf}} | ||
Line 352: | Line 360: | ||
{{note| | {{note| | ||
有时候,KDevelop项目文件并不在工作目录。 | |||
This can have several reasons, it depends on how the CMake files are written. Usually, CMake files which have a <tt>project(projectname)</tt> statement in them should work fine. Once you are familiar enough with CMake, you can try adding the statement. | This can have several reasons, it depends on how the CMake files are written. Usually, CMake files which have a <tt>project(projectname)</tt> statement in them should work fine. Once you are familiar enough with CMake, you can try adding the statement. | ||
Line 369: | Line 377: | ||
* ''C++ Support->Qt Options'' | * ''C++ Support->Qt Options'' | ||
: | :勾上''Enable Qt options''并选Qt4。Set the ''QMake Binary'' path to {{path|$HOME/qt-copy/bin/qmake}}. Then choose ''Qt 4 style'' as ''Qt include syntax''. Use {{path|$HOME/qt-copy/bin/designer}} as ''Designer Binary''. Make sure to use the ''Change Plugin Paths'' dialog to add the plugin directory from KDE so you see the KDE widgets when designer is started. To do this add {{path|$HOME/kde/lib/kde4/plugins}} to the lineedit and then click the ''Add'' button. | ||
* ''Run Options'' | * ''Run Options'' | ||
Line 418: | Line 426: | ||
:If you have more than one processor or if you have access to an icecream cluster, you might want to check the ''Run multiple jobs'' option and set the ''Number of simultaneous jobs'' to the number of available processors. This increases the compile speed. It is the same as the <tt>-j</tt> option for ''make''. | :If you have more than one processor or if you have access to an icecream cluster, you might want to check the ''Run multiple jobs'' option and set the ''Number of simultaneous jobs'' to the number of available processors. This increases the compile speed. It is the same as the <tt>-j</tt> option for ''make''. | ||
* '' | * ''格式(Formatting)'' | ||
:You should set all options here to match the coding style of the project you are working on. | :You should set all options here to match the coding style of the project you are working on. | ||
Line 430: | Line 438: | ||
<small>Abbreviation Expansion, Code Snippets, Doxygen Support, Embedded Konsole, File Tree, '''Final Packaging Support''', "Open with" Menu Addon, QuickOpen, Regular Expression Tester, Scripting, '''Security Checker''', Shell Filtering and Insertion, Text Structure and Tools Menu Addition.</small> | <small>Abbreviation Expansion, Code Snippets, Doxygen Support, Embedded Konsole, File Tree, '''Final Packaging Support''', "Open with" Menu Addon, QuickOpen, Regular Expression Tester, Scripting, '''Security Checker''', Shell Filtering and Insertion, Text Structure and Tools Menu Addition.</small> | ||
至少把那些粗体的给禁掉。 | |||
Now, open any source file if none is open already. This will enable the ''Settings->Configure Editor...'' entry, where you need to set the tab options to match the tab style used by the project you are working on. The important settings are: | Now, open any source file if none is open already. This will enable the ''Settings->Configure Editor...'' entry, where you need to set the tab options to match the tab style used by the project you are working on. The important settings are: | ||
* ''Appearance->Borders->Show line numbers'': | * ''Appearance->Borders->Show line numbers'': 要检查。 | ||
* ''Appearance->Borders->Show icon border'': | * ''Appearance->Borders->Show icon border'': 要检查。 | ||
* ''Editing->Tabulators'' | * ''Editing->Tabulators'' | ||
* ''Editing->Static Word Wrap->Show marker'': | * ''Editing->Static Word Wrap->Show marker'': 要检查。 | ||
* ''Indentation->Automatic Indentation->Indentation mode'': | * ''Indentation->Automatic Indentation->Indentation mode'': 应该是''C Style'' | ||
* ''Indentation'' | * ''Indentation'' 整体介绍 | ||
在主窗口, 点击下部的''CTags''插页, 然后选''Regenerate''按钮来创建一个CTags数据库;这样可以方便的在代码中穿梭来回。 | |||
至此,所有必要设置都完成了,恭喜,你可以开始工作了! | |||
==== | ==== 使用KDevelop ==== | ||
参考[http://docs.kde.org/development/en/kdevelop/kdevelop/ KDevelop手册],那里有关于KDevelop的整体介绍。下面会介绍些KDE 4的一些特殊事物。 | |||
===== | ===== 调试 ===== | ||
KDE有很多符号,这就意味着在调试时,你需要大内存。引用一个GDB开发员的话语: "在低于1GB内存的机器上调试KDE程序是件很讨厌的事情。" | |||
如果调试的确很慢,试试下列技巧: | |||
* | * 隐藏本地变量。The <tt>Locals</tt> part of the variable tab on the left causes a big slowdown when stepping if you have many local variables. Simple collapse the <tt>Locals</tt> part of the tree, the local variables are then not updated every step. You can still examine variables by using the <tt>Evaluate expression</tt> function. | ||
* | * 用这个补丁:http://bugs.kde.org/show_bug.cgi?id=143977。It prevents the update of the framestack widget at each step, speeding up stepping considerably. The patch introduces some minor glitches, which is why it is not yet commited. | ||
{{Note| | {{Note| | ||
KDevelop目前还不支持编辑CMake联编系统。This means you can not use KDevelop to add or remove files from the project or to change any other aspect of your project's build process. | |||
你的手工编辑CMake文件and then rerun <tt>cmakekde</tt> instead. 请阅读 [[Development/Tutorials/CMake|CMake教程]]以了解如何实施。 | |||
}} | }} | ||
{{tip| | {{tip|使用类库前,一定要先安装,然后你才能测试和调试。 | ||
这个很麻烦也很耗时间, 你应该对所有可能引用到的类库建立符号链接(''(ln -s)''),把它们从构建目录连到安装目录。 | |||
通常,最简单的程序也会在其中调用一些类库,例如Konsole就是一种类库。}} | |||
=== Eclipse === | |||
{|align="right" | |||
|[[image:Snapshot-eclipse.png|right|thumb|200px|KDE4's ktimetracker loaded as eclipse project]] | |||
|} | |||
This describes how to use Eclipse to develop KDE 4 applications. It has been tested with Eclipse Ganymed and SUSE Linux 11.1 but should work same or similar with every combination. As an example KDE application we use [http://userbase.kde.org/ktimetracker ktimetracker] from the kdepim module, other applications short work analog. | |||
Using this description you will be able to | |||
* update your working copy of KDE source code using the command svn | |||
* build your KDE module using cmake | |||
* build your KDE application from within eclipse using make | |||
* compile and run your application with one click from eclipse | |||
* get auto-completion when editing KDE source code | |||
* have an overview and navigation about your classes within eclipse | |||
* have call trees for your functions | |||
==== Set up Eclipse with KDE ==== | |||
* Check your requirements | |||
: Trying with a virtual machine [[User:Tstaerk|I]] had problems starting Eclipse with less than 1 GB RAM. After assigning 3 GB RAM to my virtual machine, Eclipse finally started. | |||
* Install eclipse | |||
: Download Eclipse IDE for C/C++ developers from http://www.eclipse.org. We unpack it to /home/user/eclipse. | |||
* Install the CDT | |||
: Download the Eclipse IDE for C/C++ Developers (68 MB) from http://www.eclipse.org/cdt/ and unpack it into your eclipse folder, in our case /home/user/eclipse. | |||
* Download kdepim | |||
: As said, we use kdepim as example here. So, download ("checkout") kdepim using svn, e.g. as anonymous: | |||
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepim | |||
: We assume you checked out into /home/user/kdepim. | |||
* Compile kdepim | |||
: Compile kdepim so the usual makefiles are present for all kdepim applications. If you have problems doing this, follow our [[Getting Started/Build/KDE4|build instructions]] | |||
* Import your project into eclipse | |||
: Surprise: To import your project, you should not use "File -> Import". Rather do: File -> New -> C++ Project -> Makefile project -> Empty Project -> un-tag "use default location" -> choose /home/user/kdepim/ktimetracker. Call it "ktimetracker". | |||
* Build your project | |||
: Make sure Project -> Properties -> C/C++ Build -> Builder Settings -> Build location -> Build directory is set correctly. | |||
: Choose Project -> Build Project | |||
* Run the project | |||
: Choose Project -> Properties -> Run/Debug Settings -> New. As project, enter ''ktimetracker'', as C/C++ Application, enter /home/user/kdepim/ktimetracker/ktimetracker. Choose Apply -> Ok -> Ok. Now you can click on the "Run" button and start it. | |||
==== Know-How ==== | |||
===== Custom builders ===== | |||
If you want to integrate the cmake build step into your build toolchain, you will need to | |||
* create a custom ''builder'' like this: | |||
cat >/bin/eclipsebuild<<EOF | |||
cmake . && make -j4 && make install | |||
EOF | |||
chmod 777 /bin/eclipsebuild | |||
* Add your builder | |||
: Choose Project -> Properties -> Builders. Un-tag all existing builders. Click "new" -> Program -> (name it "Builder for KDE"). -> Location: /bin/eclipsebuild -> Working directory /home/user/workspace/myproject1/kdepim. | |||
* Build | |||
: Now you can build your project. Every time after you restarted eclipse, choose myproject1 -> Project -> Properties -> C/C++ Build -> Ok -> Project -> Build. | |||
===== Revert what eclipse did ===== | |||
To revert what eclipse did to your project simply run | |||
rm -rf .externalToolBuilders/ .project .cproject | |||
===== Why Subversion does not work ===== | |||
When using eclipse's svn plugin and building a KDE program, you will get error messages complaining that your svn binary is too old. If you want to try and change this, here's how you get to that error: | |||
* Install the subversion plug-ins | |||
: Help -> Software Updates -> Available Software -> Add Site -> http://download.eclipse.org/technology/subversive/0.7/update-site/ -> Add Site -> http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ | |||
: Now add it: Subversive Site -> Subversive SVN Team Provider Plugin | |||
: Subversive SVN Connectors Site -> Subversive SVN Connectors -> SVNKit 1.3.0 Implementation (Optional) | |||
* Click on Install | |||
* Restart eclipse | |||
* Import your KDE module | |||
: Choose File -> New -> Other -> SVN -> Project from SVN -> https://svn.kde.org/home/kde/trunk/KDE/kdepim -> Check out as project configured using the New Project Wizard -> C++ Project -> Makefile Project -> Empty Project. As name, we choose kdepim5 -> Finish | |||
* Set cmake as build environment | |||
: Choose Project -> Properties -> C/C++ Build -> Builder Settings. Un-tag "use default build command", set "cmake" instead. Choose Project -> Properties -> C/C++ Build -> Behavior. Replace "all" by ".". | |||
==== See also ==== | |||
* http://javathreads.de/2008/07/subversion-unter-eclipse-ganymede-konfigurieren/ | |||
* http://nienhueser.de/blog/?p=19 | |||
=== Qt Creator === | |||
这里说明如何使用 Qt Creator 开发 KDE 4 应用程序。It has been tested with QtCreator 1.2.80 and SUSE Linux 11.1 but should work same or similar with every combination.我们使用来自 kdepim 模块的[http://userbase.kde.org/ktimetracker ktimetracker]作为 KDE 应用程序的范例。 | |||
==== 载入现有专案 ==== | |||
我们使用 ktimetracker 作为范例项目。 | |||
* 汇入 CMakeLists.txt 档案 | |||
File -> Open -> kdepim/CMakeLists.txt. | |||
* 配置 Qt Creator 只建构 ktimetracker | |||
Projects -> ktimetracker -> build settings -> Add a configuration ktimetracker. | |||
As build directory choose /home/youruser/kdepim/ktimetracker. As arguments for cmake use ... | |||
==== 开始 KDE 项目 ==== | |||
想要开始一个新的项目你需要告诉 Qt Creator 建构时使用 KDE 链接库。因此,选择 File -> New... 并创建您的专案。在这里我们称为''yourproject''。为了能够使用 KDE 链接库,在你的家目录,cd 进入''yourproject''并修改 ''yourproject.pro''。加上 | |||
LIBS += -lkdeui | |||
[[Category:KDE4]] | [[Category:KDE4]] |
Latest revision as of 12:36, 23 June 2013
启动KDE4的应用程序和会话
当您开始KDE4的开发时,通常您可以有这样三个选择:
- 您可以在桌面环境里以独立于其他应用程序的方式运行KDE4应用程序。
- 您可以在桌面环境里嵌入一个KDE4会话。
- 您可以将KDE4作为您唯一的桌面环境。
随后的章节描述的就是这三种选择。
Qt: Session management error: Could not open network socket
(会话管理错误:打不开套接字)
QMutex::lock: Deadlock detected in thread -1241241936
(在线程-1241241936中侦测到死锁)
或者卡在运行startkde的时候,请阅读这篇文章来绕过这个问题。
启动KDE4应用程序
在普通的shell里使用sux
使用这个方法需要sux工具 (http://fgouget.free.fr/sux/sux-readme.shtml)。sux工具在大多数发行版上是可用的。当然你也可以参考下一篇 normal shell without sux 的文档。sux可以让您用一种干净而简洁的方式在切换到其他用户帐号时隐式地管理X转发(认证和显示输出)。
登录时请输入
sux - kde-devel
您的.bashrc脚本将帮助您正确地设置全部环境变量和其他相关配置。如果要启动一个应用程序,只需简单地输入程序名称;例如
kwrite
- 运行
unset XDG_DATA_DIRS ; kbuildsycoca4
在shell里不用SUX
启动KDE 4应用程序最简单的方法是用su作为kde-devel用户登录,然后从命令行简单启动。登录,输入
su - kde-devel
,
然后,输入你的密码
export DISPLAY=:0
所有的环境变量和其他设置应该参照下面的连接设置正确 .bashrc. 如果想要启动一个程序其实很简单,只是需要输入程序的名字就可以了; 例如
kwrite
- run
unset XDG_DATA_DIRS ; kbuildsycoca4
sudo xhost +local:kde-devel
;确保应用程序可以连接到当前 X 会话。
Although your X server should accept incoming TCP connections, this is often switched off as a distribution default (like with Kubuntu Feisty). When using kdm you must edit /etc/kde3/kdm/kdmrc as root and make sure it does not contain:
ServerArgsLocal=-nolisten tcp
Once you have fixed this, you will need to restart your X server. The xhost command should no longer return an "unable to open display" error.
For convenience, you should put this in the Autostart of your regular user. To do this, create a new file in the $HOME/.kde/Autostart directory of your regular user with the following content:
#! /bin/sh
xhost +local:kde-devel
确保新文件是可执行的,对他执行chmod +x。
If you'd like to find out more about the security issues involved with using xhost,详见此文
使用SSH
The simplest way to run a KDE 4 application with SSH in your current desktop environment is to get an X-aware shell prompt as the kde-devel user like this:
ssh -X kde-devel@localhost
现在可以按正常方法启动KDE应用了,例如:
kwrite
The two lines can be conveniently combined:
ssh -X kde-devel@localhost kwrite
无密码登录
使用前,无密码登录必须要有相应设置。以普通桌面用户运行下列命令:
ssh-keygen -t rsa
连续三次回车以接受这个路径~/.ssh/id_rsa,不填任何东西。Now, copy the single line in ~/.ssh/id_rsa.pub that's printed after running this command:
cat ~/.ssh/id_rsa.pub
After that line is copied, ssh back into the kde-devel user and put the copied line in the file $HOME/.ssh/authorized_keys:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite \ $HOME/.ssh/authorized_keys
Paste in the line, save the file, and quit KWrite. Now try running KWrite again with the same SSH command; you shouldn't have to enter a password anymore:
ssh -X kde-devel@localhost $HOME/kde/bin/kwrite
chmod og-xrw ~/.ssh/id_rsa
SSH桌面文件
If you want to be able to launch apps more easily than running them with an SSH command from the command line, one way is to create .desktop files that ssh into the other account.
You can start with an existing .desktop file as a template (like one from your desktop) or you can make one from scratch. The main idea is to prefix the command being run with this string:
ssh -X kde-devel@localhost $HOME/kde/bin/
一个运行KWrite的(.desktop)文件通常有下列内容:
[Desktop Entry]
Categories=Qt;KDE;TextEditor;
Comment=
DocPath=kwrite/index.html
Encoding=UTF-8
Exec=ssh -X kde-devel@localhost /home/kde-devel/kde/bin/kwrite %U
GenericName=Text Editor
Icon=kwrite
InitialPreference=8
MimeType=text/plain
Name=KWrite (kde-devel)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-StartupType=Multi
X-DCOP-ServiceType=non
X-KDE-StartupNotify=true
X-KDE-SubstituteUID=false
X-KDE-Username=
加载KDE 4会话
嵌套 KDE 4会话
Instead of using a full-blown new virtual X for developing software you can use Xephyr to embed your KDE 4 session into your working KDE 3 or other X11 environment.
You can also do this with xnest, but as xnest cannot handle extensions like Render many people prefer Xephyr.
If you want to get a minimal KDE session up and running, just launch Xephyr (available in Kubuntu as xserver-xephyr; Gentoo users compile x11-base/xorg-server with USE="kdrive"):
Xephyr :1&
加载KDE:
export DISPLAY=:1 /path/to/kde4/bin/startkde-modified &
startkde-modified is a copy of the startkde-script which includes the following lines on the top:
export KDEDIR=`kde4-config --prefix`
export LD_LIBRARY_PATH=$KDEDIR/lib
export PATH=$KDEDIR/bin/:$PATH
export KDEHOME=~/.kde4
可以在KDM上通过Xdmcp协议使用Xephyr,创建一个新的KDE 4连到KDM。
在Kubuntu上, 可以这么做
[Xdmcp]
# Whether KDM should listen to incoming XDMCP requests.
# 缺省是 true
Enable=false
in /etc/kde3/kdm/kdmrc to
[Xdmcp]
# Whether KDM should listen to incoming XDMCP requests.
# 缺省是 true
Enable=true
and adjust your /etc/kde3/kdm/Xaccess to allow your local machine access. Additionally you should make sure to set up a port blocking policy on all external interfaces for the Xdmcp port if you are doing this on a laptop or a PC in an untrusted environment.
If you are done, simply launch Xephyr:
Xephyr -query localhost :1 -host-cursor -screen 1024x768&
where -host-cursor tries to reuse the host's cursor and -screen sets the screen dimensions.
Note: If you get lots of refused connection errors, you might want to use the -ac option of Xephyr. For example:
Xephyr -ac :1&
Another option to try if you get lots of refused connection errors is you may need to grant assess to your kde-devel user to your X server. As root or using sudo execute:
xhost +local:kde-devel
如果没有Xephyr,也可以用Xnest:
Xnest -ac :1& export DISPLAY=:1
cleanup confusing sections and fix sections which contain a todo
Sping 00:25, 9 April 2007 (CEST)
I use this for my start script nested_kde4.sh:
#! /bin/bash NESTED_KDE_DISPLAY_BACKUP=$DISPLAY export DISPLAY=:0 Xephyr :1 -screen 1024x768 & export DISPLAY=:1 $HOME/kde/bin/startkde-modified & export DISPLAY=${NESTED_KDE_DISPLAY_BACKUP}
如果碰到:
"Call to lnusertemp failed (temporary directories full?). Check your installation."
试试这个:
mkdir /var/tmp/kde-devel-kde4
The above code assumes you work with user kde-devel.
Solitary KDE 4会话
运行一个完整的KDE 4桌面会话,you can either start it from the command line as you normally would, with something like this:
X :1 & export DISPLAY=:1 startkde
or you can can add it to your login manager. If you are using KDM (or a compatible login manager) this is done by creating a .desktop file in either `kde-config --prefix`/share/apps/kdm/sessions/ or in /usr/share/xsessions/. The easiest thing to do is to copy an existing kde.desktop file and name it kde4.desktop. Open this new .desktop file in a text editor and change the Exec, TryExec and Name entries to look something like this:
Exec=$HOME/kde/bin/startkde
TryExec=$HOME/kde/bin/startkde
Name=KDE4
Replace $HOME/kde in the example above with the prefix you are installing KDE4 into.
After restarting the login manager (Alt+e in KDM) this new entry should appear in the sessions menu.
开发任务
KDevelop
这里讲述如何用Kdeveloper 3.4 开发KDE 4 的应用。有问题,建议,纠正的话,请在讨论页面提出。
前提条件
You need at least KDevelop 3.4 for this, which is still a KDE 3 application. Versions lower than 3.4 do not have Qt 4 support among other things. The KDE 4 version of KDevelop is not yet ready for serious development. You can get KDevelop at the KDevelop homepage. Make sure you install KDevelop like all other KDE 3 applications, not with your kde-devel user.
安装最新的GDB,版本是 6.6.0。
本地安装kdelibs API文档,里面简述了构建指令。
你还需要ctags, htdig, htmerge 和htsearch. valgrind 和callgrind也是有用的。
确保你遵循KDE 4的构建指令以及一个可用的KDE 4环境。确保一些简单的KDE 4应用如Konsole或KWrite,可以从命令行构建,用kde-devel用户。
The following steps are all done with the kde-devel user. You need to login as that user by typing
su - kde-devel
.
设置环境
KDevelop并不与生俱来就支持CMake。但,CMake可以产生KDevelop项目文件,只要在执行cmake命令时加上 -GKDevelop3。他会告诉CMake,产生KDevelop项目文件和通用makefiles文件。The best way to do this is to modify your cmakekde function in your .bashrc。改变如下:
cmake $srcFolder -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
to
cmake $srcFolder -GKDevelop3 -DCMAKE_INSTALL_PREFIX=$KDEDIR \
-DCMAKE_BUILD_TYPE=debugfull&& \
make && \
make install;
After you have done that, re-login so that the changes to the .bashrc file take effect. Then you need to rerun cmakekde in the (root) build directory of the project you want to work on with KDevelop (if you didn't use -GKDevelop3 on the building step). For example, if you want to work on Konsole, which lives in kdebase, you need to run cmakekde in the $KDE_BUILD/KDE/kdebase directory. This unfortunately completely rebuilds everything, but only once when you change the generator.
Since all environment variables of the kde-devel user are KDE 4 specific, these need to be set back to match your KDE 3 environment before starting KDevelop. A simple way to do this is to add the following function to your .bashrc:
function start3app {
mkdir -p /tmp/$USER-kde
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games
export LD_LIBRARY_PATH=
export KDETMP=/tmp/$USER-kde
export KDEVARTMP=/var/tmp/$USER-kde
export KDEHOME=$HOME/.kde
export KDEDIR=/usr
export KDEDIRS=$KDEDIR
export DISPLAY=:0
eval "$@"
source $HOME/.bashrc #Reset environment variables again
}
The PATH and LD_LIBRARY_PATH variables are taken from the KDE 3 user, and they may be different on your system. Type
echo $PATH
and
echo $LD_LIBRARY_PATH
as normal KDE 3 user to get these values. The above function assumes that KDE 3 is installed in the /usr prefix, as it is the case on Debian-based systems. If your KDE 3 is installed to a different prefix, for example /opt/kde3, you need to change the line setting KDEDIR accordingly.
Now you should be able to start KDevelop by typing start3app kdevelop. Do that now.
设置KDevelop
Now that KDevelop has started, you need to adjust a few settings. Go to Settings->Configure KDevelop...->Documentation for this. Remove all entries that are not relevant to KDE 4 coding.
点击Add...,添加KDELib的API文档。对话框中,用下列设置:
- Type: Doxygen文档集 (设为首位)
- Location: $KDE_SRC/KDE/kdelibs/kdelibs-apidocs/index.html
添加Qt API文档,用下列设置:
- Type: Qt文档集 (设为首位)
- Location: $HOME/qt-copy/doc/html/qt.dcf
After you have added kdelibs and Qt API documentation, make sure all checkboxes (TOC,Index and Search) are enabled. Then, go to the Full Text Search tab and make sure the paths to the htdig, htmerge and htsearch executables are correct. You can then close the settings dialog.
Now it is time to open the project you want to work on by clicking Project->Open Project.... The project files are located in the directory. For example, if you want to work on Konsole, you need to open $KDE_BUILD/KDE/kdebase/apps/konsole/konsole.kdevelop. You now need to adjust a few project-specific settings in Project->Project Options. You need to do this every time you start to work on a different project.
This can have several reasons, it depends on how the CMake files are written. Usually, CMake files which have a project(projectname) statement in them should work fine. Once you are familiar enough with CMake, you can try adding the statement.
A workaround for this is to simply use the KDevelop project file of the parent folder, or even higher. In this case, you need to use the Make Active Directory entry in the context menu of the File Selector sidetab. With this, you can ignore the other unwanted folders when building and installing.
- C++ Support->Code Completion
- Here you need to add code completion databases for Qt and kdelibs, and more if you like, for example you might need a database for kdepimlibs when working on kdepim.
- For kdelibs, click the Add... button and choose KDevelop Custom Directory PCS Importer, then add your KDE include directory ($HOME/kde/include) to the list and proceed. You can use the file selection dialog and the Add button to add it.
- Now, add the database for Qt 4 by selecting KDevelop Qt4 PCS Importer this time. You need to select the Qt 4 include directory, which is $HOME/qt-copy/include.
- C++ Support->Qt Options
- 勾上Enable Qt options并选Qt4。Set the QMake Binary path to $HOME/qt-copy/bin/qmake. Then choose Qt 4 style as Qt include syntax. Use $HOME/qt-copy/bin/designer as Designer Binary. Make sure to use the Change Plugin Paths dialog to add the plugin directory from KDE so you see the KDE widgets when designer is started. To do this add $HOME/kde/lib/kde4/plugins to the lineedit and then click the Add button.
- Run Options
- Make sure you use the correct binary as Executable. For example, if you want to run Konsole, this is $KDE_BUILD/KDE/kdebase/apps/konsole/src/konsole. You should add --nofork to the Debug Arguments or debugging some applications like KMail will not work at all.
- Because the start3app functions changes some environment variables, you need to change them back here so the KDE 4 applications can be run without problems from within KDevelop.
- For some applications, like Konsole, this is not strictly necessary, but others like KMail will crash if you do not change this.
- Simply click the Add / Copy button to add new environment variables. You will need the following, which are the same as in your .bashrc:
Name Value KDEHOME $HOME/.kde4 PATH $QTDIR/bin:$KDEDIR/bin:/usr/local/bin:$PATH LD_LIBRARY_PATH $QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH KDETMP /tmp/$USER-kde4 KDEVARTMP /var/tmp/$USER-kde4 KDEDIR $HOME/kde KDEDIRS $KDEDIR LD_BIND_NOW 42
- Build Options->Build
- Make sure the correct build directory is selected. Again, for Konsole, this would be $KDE_BUILD/KDE/kdebase/apps/konsole.
- Build Options->Make
- You might want to check Abort on first error. You also might want to add VERBOSE= or VERBOSE=1 to Additional make options to control the level of verbosity for the build process.
- If you have more than one processor or if you have access to an icecream cluster, you might want to check the Run multiple jobs option and set the Number of simultaneous jobs to the number of available processors. This increases the compile speed. It is the same as the -j option for make.
- 格式(Formatting)
- You should set all options here to match the coding style of the project you are working on.
- CTags->General
- You need to correctly set the Path to ctags binary, which is /usr/bin/ctags on Debian-based systems.
- You probably want to enable the When more than one hit, go directly to the first option.
Now you have finished adjusting your project-specific settings. Now you should remove some plugins you do not need, in Settings->Configure Plugins.... I for example disable the following plugins:
Abbreviation Expansion, Code Snippets, Doxygen Support, Embedded Konsole, File Tree, Final Packaging Support, "Open with" Menu Addon, QuickOpen, Regular Expression Tester, Scripting, Security Checker, Shell Filtering and Insertion, Text Structure and Tools Menu Addition.
至少把那些粗体的给禁掉。
Now, open any source file if none is open already. This will enable the Settings->Configure Editor... entry, where you need to set the tab options to match the tab style used by the project you are working on. The important settings are:
- Appearance->Borders->Show line numbers: 要检查。
- Appearance->Borders->Show icon border: 要检查。
- Editing->Tabulators
- Editing->Static Word Wrap->Show marker: 要检查。
- Indentation->Automatic Indentation->Indentation mode: 应该是C Style
- Indentation 整体介绍
在主窗口, 点击下部的CTags插页, 然后选Regenerate按钮来创建一个CTags数据库;这样可以方便的在代码中穿梭来回。
至此,所有必要设置都完成了,恭喜,你可以开始工作了!
使用KDevelop
参考KDevelop手册,那里有关于KDevelop的整体介绍。下面会介绍些KDE 4的一些特殊事物。
调试
KDE有很多符号,这就意味着在调试时,你需要大内存。引用一个GDB开发员的话语: "在低于1GB内存的机器上调试KDE程序是件很讨厌的事情。" 如果调试的确很慢,试试下列技巧:
- 隐藏本地变量。The Locals part of the variable tab on the left causes a big slowdown when stepping if you have many local variables. Simple collapse the Locals part of the tree, the local variables are then not updated every step. You can still examine variables by using the Evaluate expression function.
- 用这个补丁:http://bugs.kde.org/show_bug.cgi?id=143977。It prevents the update of the framestack widget at each step, speeding up stepping considerably. The patch introduces some minor glitches, which is why it is not yet commited.
这个很麻烦也很耗时间, 你应该对所有可能引用到的类库建立符号链接((ln -s)),把它们从构建目录连到安装目录。
通常,最简单的程序也会在其中调用一些类库,例如Konsole就是一种类库。Eclipse
This describes how to use Eclipse to develop KDE 4 applications. It has been tested with Eclipse Ganymed and SUSE Linux 11.1 but should work same or similar with every combination. As an example KDE application we use ktimetracker from the kdepim module, other applications short work analog.
Using this description you will be able to
- update your working copy of KDE source code using the command svn
- build your KDE module using cmake
- build your KDE application from within eclipse using make
- compile and run your application with one click from eclipse
- get auto-completion when editing KDE source code
- have an overview and navigation about your classes within eclipse
- have call trees for your functions
Set up Eclipse with KDE
- Check your requirements
- Trying with a virtual machine I had problems starting Eclipse with less than 1 GB RAM. After assigning 3 GB RAM to my virtual machine, Eclipse finally started.
- Install eclipse
- Download Eclipse IDE for C/C++ developers from http://www.eclipse.org. We unpack it to /home/user/eclipse.
- Install the CDT
- Download the Eclipse IDE for C/C++ Developers (68 MB) from http://www.eclipse.org/cdt/ and unpack it into your eclipse folder, in our case /home/user/eclipse.
- Download kdepim
- As said, we use kdepim as example here. So, download ("checkout") kdepim using svn, e.g. as anonymous:
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdepim
- We assume you checked out into /home/user/kdepim.
- Compile kdepim
- Compile kdepim so the usual makefiles are present for all kdepim applications. If you have problems doing this, follow our build instructions
- Import your project into eclipse
- Surprise: To import your project, you should not use "File -> Import". Rather do: File -> New -> C++ Project -> Makefile project -> Empty Project -> un-tag "use default location" -> choose /home/user/kdepim/ktimetracker. Call it "ktimetracker".
- Build your project
- Make sure Project -> Properties -> C/C++ Build -> Builder Settings -> Build location -> Build directory is set correctly.
- Choose Project -> Build Project
- Run the project
- Choose Project -> Properties -> Run/Debug Settings -> New. As project, enter ktimetracker, as C/C++ Application, enter /home/user/kdepim/ktimetracker/ktimetracker. Choose Apply -> Ok -> Ok. Now you can click on the "Run" button and start it.
Know-How
Custom builders
If you want to integrate the cmake build step into your build toolchain, you will need to
- create a custom builder like this:
cat >/bin/eclipsebuild<<EOF cmake . && make -j4 && make install EOF chmod 777 /bin/eclipsebuild
- Add your builder
- Choose Project -> Properties -> Builders. Un-tag all existing builders. Click "new" -> Program -> (name it "Builder for KDE"). -> Location: /bin/eclipsebuild -> Working directory /home/user/workspace/myproject1/kdepim.
- Build
- Now you can build your project. Every time after you restarted eclipse, choose myproject1 -> Project -> Properties -> C/C++ Build -> Ok -> Project -> Build.
Revert what eclipse did
To revert what eclipse did to your project simply run
rm -rf .externalToolBuilders/ .project .cproject
Why Subversion does not work
When using eclipse's svn plugin and building a KDE program, you will get error messages complaining that your svn binary is too old. If you want to try and change this, here's how you get to that error:
- Install the subversion plug-ins
- Help -> Software Updates -> Available Software -> Add Site -> http://download.eclipse.org/technology/subversive/0.7/update-site/ -> Add Site -> http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/
- Now add it: Subversive Site -> Subversive SVN Team Provider Plugin
- Subversive SVN Connectors Site -> Subversive SVN Connectors -> SVNKit 1.3.0 Implementation (Optional)
- Click on Install
- Restart eclipse
- Import your KDE module
- Choose File -> New -> Other -> SVN -> Project from SVN -> https://svn.kde.org/home/kde/trunk/KDE/kdepim -> Check out as project configured using the New Project Wizard -> C++ Project -> Makefile Project -> Empty Project. As name, we choose kdepim5 -> Finish
- Set cmake as build environment
- Choose Project -> Properties -> C/C++ Build -> Builder Settings. Un-tag "use default build command", set "cmake" instead. Choose Project -> Properties -> C/C++ Build -> Behavior. Replace "all" by ".".
See also
- http://javathreads.de/2008/07/subversion-unter-eclipse-ganymede-konfigurieren/
- http://nienhueser.de/blog/?p=19
Qt Creator
这里说明如何使用 Qt Creator 开发 KDE 4 应用程序。It has been tested with QtCreator 1.2.80 and SUSE Linux 11.1 but should work same or similar with every combination.我们使用来自 kdepim 模块的ktimetracker作为 KDE 应用程序的范例。
载入现有专案
我们使用 ktimetracker 作为范例项目。
- 汇入 CMakeLists.txt 档案
File -> Open -> kdepim/CMakeLists.txt.
- 配置 Qt Creator 只建构 ktimetracker
Projects -> ktimetracker -> build settings -> Add a configuration ktimetracker.
As build directory choose /home/youruser/kdepim/ktimetracker. As arguments for cmake use ...
开始 KDE 项目
想要开始一个新的项目你需要告诉 Qt Creator 建构时使用 KDE 链接库。因此,选择 File -> New... 并创建您的专案。在这里我们称为yourproject。为了能够使用 KDE 链接库,在你的家目录,cd 进入yourproject并修改 yourproject.pro。加上
LIBS += -lkdeui