<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook V3.1-Based Variant V1.0//EN" [
 <!ENTITY kdevelop "<application>kdevelop</application>">
 <!ENTITY % addindex "IGNORE">
 <![ %addindex; [ <!ENTITY docindex SYSTEM "docindex.docbook"> ]]>
]>
<book lang="en">
<bookinfo>
<title>Kdevelop使用手册
</title>
<subtitle> kdevelop集成开发环境之参考指南,unix系统,1.2版</subtitle>
<authorgroup>
<author>
<surname>Ralf Nolden </surname>
<affiliation>
	  <orgname>Kdevelop小组</orgname>
<address><email><ulink url="mailto:Ralf.Nolden@post.rwth-aachen.de">&lt;Ralf.Nolden@post.rwth-aachen.de&gt;</ulink></email></address>
</affiliation>
</author>
</authorgroup>
<date>版本 1.2 , 2000年4月10日</date>
<releaseinfo><!-- information about this particular version --></releaseinfo>
<abstract>
<para>这本手册本身也是Kdevelop集成开发环境的一部分,因此版权也属于GNU公有版权；欲知详
细信息,请参见<link linkend="Copyright">版权</link>以获取进一步的信息.</para>
<para>KDE</para><!-- Merge this with the previous paragraph; it comes from <META NAME="description" CONTENT="..."> --></abstract>

</bookinfo>

<chapter id="index-0">
<title>介绍</title>

<para>正如世界上每种事物都有其发展趋势,今天的计算机看起来正越来越倾向于对免费软件
的使用,甚至连商业用途的软件也不例外.最有名的免费软件当属Linux.目前人们普遍认
同,Linux(和其他一些项目,例如Apache网络服务器,Perl语言与GNU工具箱)证实了免费软
件也可以象商业软件一样保证很高的质量.但是除开质量问题不谈,终端用户仍然必须忍受任
何unix系统的苛刻的命令之苦.Linux系统要想更加
繁荣,就需要不断应用,不管是免费软件还是商业软件;以及简单易用性. </para>

<para>KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>工程尽力通过提供对桌面的方便使用和自带的函数库来增加可用的基于
GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>的软件资源的种类,来填补这一空白.但是尤其因为免费软件通常都是作者利用空
闲时间做成的,对许多程序员来说,问题的关键就在于他们对现有的代码开发环境的喜爱程
度.Kdevelop想要采取另一个重要步骤:让程序设计者的生活更加简单而高效:用Kdevelop
开发出来的产品可在同样长的开发周期内在可靠性和功能上达到一个更高的水平。</para>

<para>为了实现这一目标,Kdevelop集成开发环境提供了很多程序开发者需要的特征,同时它
也集成了第三方项目的函数库,例如<literal remap="tt">make</literal>和GNU C++ Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>s编译器,并把它们
做成开发过程中一个可视化的集成部件.
KDevelop 管理:
<itemizedlist>
<listitem>
<para>所有开发C++程序所需要的开发工具,例如Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器,Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>联接
器,automake <indexterm remap="idx"><primary>automake</primary></indexterm>和autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm> ,</para>
</listitem>
<listitem>
<para> KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>应用向导,可生成完全的,可执行的应用实例, </para>
</listitem>
<listitem>
<para>类生成器,可产生新的classes <indexterm remap="idx"><primary>classes</primary></indexterm>类并把他们集成到当前项目中,</para>
</listitem>
<listitem>
<para>文件管理器,管理源文件,头文件,文件等使之被包含在项目中,</para>
</listitem>
<listitem>
<para>用SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>编写的用户使用手册的创建和由KDE自动生成的HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-
输出output <indexterm remap="idx"><primary>output</primary></indexterm>，</para>
</listitem>
<listitem>
<para>为你的工程的各个classes <indexterm remap="idx"><primary>classes</primary></indexterm>类自动生成的基于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>的API-
documentation <indexterm remap="idx"><primary>API-
documentation</primary></indexterm>文件,在以前的库中可查,</para>
</listitem>
<listitem>
<para>为您的运用提供全球化支持,允许翻译者将其目标语言轻松地加入一个项目, </para>
</listitem>
<listitem>
<para>所见既所得,---由内置的对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>完成的用户界面的创建,</para>
</listitem>
<listitem>
<para>利用CVS,通过为最急需的函数提供一个易于使用的前端来管理你的项目，</para>
</listitem>
<listitem>
<para>通过集成KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>调试你的应用程序,</para>
</listitem>
<listitem>
<para>利用KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm>编辑项目细节pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>，</para>
</listitem>
<listitem>
<para>根据你自己的个人需要,你可以通过"Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>"菜单把其他任何你所需要的开发程
序包括进来。</para>
</listitem>
</itemizedlist>
</para>

<para>KDevlop使得在一个地方同所有的程序工作成为一种乐趣,它通过自动的标准开发程序,和提
供你对所有所需信息的直接路径来节省你的时间.集成浏览器的设计支持开发者在连接中对
其项目提出文档documentation <indexterm remap="idx"><primary>documentation</primary></indexterm>请求。</para>

<para>classs viewer <indexterm remap="idx"><primary>classs viewer</primary></indexterm>类浏览器和错误寻找器通过鼠标点击,无需寻找文件就可以把你带到项
目代码的任何地方;文件树给你到达project files <indexterm remap="idx"><primary>project files</primary></indexterm>项目文件的直接路径,集成的帮助
系统也通过IDE提供从任何地方到达在线文档的超级路径。</para>

<sect1 id="index-1">
<title>改变</title>

<para>KDevelop1.0版本拥有开发C/C++最需要的设施。在KDvelop开发阶段,项目从0.1以及随后
发布的0.2,0.3和0.4版起,已经有了很大的提高,他们中的每一个都经过了检验和固定调试.
我们相信,目前的版本将成为KDE 1.x系列的最终发布版本,会给开发者们一个他们希望使用
的开发环境.</para>

<para>改进主要在以下一些部分:</para>

<para><itemizedlist>
<listitem>
<para>快速的类语法分析器和显示图表、以树的方式浏览类的浏览器和基于对话的成员及类
的加入,</para>
</listitem>
<listitem>
<para>对最常用的的功能--例如增加，去除，升级，及提交文件及目录--的CVS支持,</para>
</listitem>
<listitem>
<para>更新及扩展过的文档, 现在随KDevelop一起发布的共有5本手册,</para>
</listitem>
<listitem>
<para>错误定位类，语法分析器, 对话框编辑器和错误寻找器。</para>
</listitem>
</itemizedlist>
</para>

<para>任何有关IDE,其文档以及特色要求的评论都会受到欢迎.</para>
</sect1>

<sect1 id="index-2">
<title>关于这本手册</title>

<para>这本用户手册提供给用户一个KDevelop IDE的完整的总体概况,并简要描述了其基本开
发过程.要想得到关于它的更多信息,我们建议您阅读KDevelop自带的KDevelop编程用户手
册<ulink url="programming/index.html">KDevelop编程手册</ulink>,它
包含了例如如何理解生成的应用框架application framework <indexterm remap="idx"><primary>application framework</primary></indexterm>s 及如何使用项目实例
生成功能完全的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 应用的话题。</para>

<para>因此这本手册的设计被分为以下几部分:
<itemizedlist>
<listitem>
<para><link linkend="Installation">安装篇</link>, 包括系统要求,安装和
KDevelop IDE的安装。</para>
</listitem>
<listitem>
<para><link linkend="Programs">编程篇</link>, 告诉你程序是如何由标准的
GNU开发工具生成和组建的。</para>
</listitem>
<listitem>
<para><link linkend="Development-with-KDevelop">利用KDevelop开发篇</link>
, 简要说明开发环境的主要功能。</para>
</listitem>
<listitem>
<para><link linkend="Overview">概要篇</link>, 解释菜单、对话框和键盘热键
shortcuts <indexterm remap="idx"><primary>shortcuts</primary></indexterm>。</para>
</listitem>
<listitem>
<para><link linkend="The-Help-System">帮助系统篇</link>, 告诉你如何使
用内置的documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>文档浏览器和另外的帮助功能。</para>
</listitem>
<listitem>
<para><link linkend="Working-with-the-Editor">编辑篇</link>, 说
明文件管理和编辑的特点。</para>
</listitem>
<listitem>
<para><link linkend="Projects">项目篇</link>, 描述软件项目的产生和支持。</para>
</listitem>
<listitem>
<para><link linkend="Build-Settings">编译篇</link>, 包括关于如何设置
Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器、连接器标签和项目选项的说明。</para>
</listitem>
<listitem>
<para><link linkend="The-Class-Browser">类浏览器篇</link>, 告诉你如
何使用KDevelop中功能强大的类浏览器。</para>
</listitem>
<listitem>
<para><link linkend="The-Dialog-Editor">对话框编辑器篇</link>, 描述集成
的可视化GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>constructor/以及它如何生成C++output <indexterm remap="idx"><primary>output</primary></indexterm>输出的。</para>
</listitem>
<listitem>
<para><link linkend="General-Configuration">一般设置篇</link> 说
明如何为使用KDevelop进行全局设置。</para>
</listitem>
<listitem>
<para><link linkend="Questions-and-Answers">问与答</link>, 包括
了在不同风格的Unix系统中使用KDevelop中会遇到的问题和问题的一般解决方法。</para>
</listitem>
</itemizedlist>
</para>

<para>对于程序设计新手和才开始使用本产品的用户,我们建议您在正式开始使用IDE之前首
先仔细阅读这本手册,它介绍了详细的使用方法.对事物运作情况的深刻理解是节省你寻找各
个功能和特色的时间的最快方法,因为它让你能够使用虽然更简单却是第一流的程序开发工
具。</para>
</sect1>

<sect1 id="kdevelop">
<title>关于KDevelop项目</title>

<para>KDevelop项目开始于1998年的夏天,也就是KDE 1.0发布以后．我们希望为程序员，特别是
为KDE桌面开发应用的程序员提供一个简单易用的C/C++集成开发环境.之后,该项目得到了
许多人的帮助和支持,他们和项目的发起者一样希望帮助开发组继续这个被广泛认可的编程
环境.在一年半内,该IDE发展成为一个功能齐全而稳定的开发环境,以及很好的可用性,因为
开发者们使用这个IDE来开发自身.因此程序的错误以及编写KDE应用程序必须的扩展往
往被作者自己发现,而错误则并很快得以更正.</para>

<para>第一个于1999年9月6日正式发布的稳定版本是1.0版.从那以后,KDevelop小组通过添加新
代码和修改以前不稳定的部分以不断的向IDE中增加新的特征和加强稳定性,从而导致在
2000年2月28日发布了第二个版本,即1.1版</para>

<para>从此,该项目不断的集成更多的功能并由许多翻译者将KDevelop译成尽量多的语言给国际
开发者提供他们本国语言的集成开发环境,包括附带的手册.许多使用者把他们的经验和
知识贡献给这个Linux/Unix下极有希望的项目产品,以使其具有更好的稳定性和对其它Unix
平台的良好移置性.</para>
</sect1>

<sect1 id="index-3">
<title>可打印的版本</title>

<para>正如标题所示,KDevelop完整的文档已经有了可打印的版本"<emphasis remap="bf">为Linux开发应用程序:KDE
版本</emphasis>",你可以从KDevelop主页
<ulink url="http://www.kdevelop.org">http://www.kdevelop.org</ulink>或者
<ulink url="http://www.opendocs.org">http://www.opendocs.org</ulink>订购.
销售该书的毛利将被返回给KDevelop项目一支持其后续版本的开发</para>

<para>KDevelop文档的可打印版本也可以从KDevelop主页
<ulink url="http://www.kdevelop.org">http://www.kdevelop.org</ulink> 
获得,以DVI,PostScript和PDF格式,A4和信纸大小提供</para>
</sect1>
</chapter>

<chapter id="installation">
<title>安装篇</title>

<sect1 id="kdevelop-0">
<title>如何获得KDevelop</title>

<para>KDevelop可以在地址为<ulink url="http://www.kde.org/current.html">\|\|</ulink>的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>应用
页面上或者地址为<ulink url="http://www.kdevelop.org">\|\|</ulink>的KDevelop主页上找到.在Linux
的发布中也可以获得,例如SUSE 6.1版.</para>

<para>我们还在我们的主页上为那些希望获得最新版KDevelop的用户提供KDevelop CVS库的
快照.一般来说,这些快照并非着意于被用在产品开发上,而是作为对新特色的测试并使大家
了解KDevelop小组的开发进度.我们还直接提供KDevelop所需要的各种第三方软件,例如
KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>和KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>。
如果您现在遇到了编译或使用Kdevelop的问题,请阅读这本手册的<link linkend="Questions-and-Answers">问与答</link>
部分或KDevelop包里的FAQ文件.如果
您遇到的问题没有叙述到,请将您的问题通过一封头部为空,以"subscribe"为内容的信件提
交至地址为<ulink url="mailto:kdevelop@fara3.cs.uni-posdam.de">kdevelop@fara3.cs.uni-posdam.de</ulink>的KDevelop邮件表单.要求和问题报告应仅以
KDevelop IDE的使用为目标,而不是关于您在编写自己的应用程序中所遇到的任何
实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>问题.不管怎样,所有送至邮件表单的信件都应该用英文书写,
这样所有的参与者都可以加入讨论,这样也能为您提供更好的帮助.邮件表单也着意于那些愿
意为此作出贡献或已经找到自己所遇到问题的解答方法的用户,这样我们也能确定
errors <indexterm remap="idx"><primary>errors</primary></indexterm>错误并将这些知识给予那些初学者一个更专业的第一手帮助.报告问题的一个
好方法是通过从控制台启动KDevelop寄出你得到的output <indexterm remap="idx"><primary>output</primary></indexterm>输出,或粘贴KDevelop的
内部Messages-window <indexterm remap="idx"><primary>Messages-window</primary></indexterm>信息窗的内容。</para>
</sect1>

<sect1 id="requirements-requirements">
<title>要求Requirements <indexterm remap="idx"><primary>Requirements</primary></indexterm></title>

<para>为了成功编译和使用KDevelop,你需要以下程序和库,它们在大多数平台上作为发布的
软件包都易于得到,所以安装起来也很容易。</para>

<para><emphasis remap="bf">必要项:</emphasis>
<itemizedlist>
<listitem>
<para>g++ 2.7.2/g++ 2.8.1/egcs 1.1 (或可兼容), 在地址<ulink url="http://www.gnu.org">\|\|</ulink>
可以获得。</para>
</listitem>
<listitem>
<para>GNU make (或可兼容), 在地址<ulink url="http://www.gnu.org">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>perl 5.004, 在地址<ulink url="http://www.perl.com">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm> 2.12, 在地址 <ulink url="http://www.gnu.org">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>automake <indexterm remap="idx"><primary>automake</primary></indexterm> 1.2, 在地址 <ulink url="http://www.gnu.org">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>flex 2.5.4,</para>
</listitem>
<listitem>
<para>GNU gettext, 在地址 <ulink url="http://www.gnu.org">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>Qt 1.42, 在地址 <ulink url="http://www.troll.no">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 1.1.x, 在地址 <ulink url="http://www.kde.org">\|\|</ulink>处可以获得。</para>
</listitem>
</itemizedlist>
</para>

<para><emphasis remap="bf">可选项:</emphasis>
<itemizedlist>
<listitem>
<para>a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm> 或 enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 以提供打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>支持。</para>
</listitem>
<listitem>
<para>ghostview 或 kghostview 以提供打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 预览。</para>
</listitem>
<listitem>
<para>glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm> 4.0 以提供搜寻索引search index <indexterm remap="idx"><primary>search index</primary></indexterm>, 在地址<ulink url="http://glimpse.cs.arizona.edu">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>sgmltools 1.0, 在地址 <ulink url="http://www.sgmltools.org">\|\|</ulink>处可以获得。</para>
</listitem>
<listitem>
<para>KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm> (<emphasis remap="bf">KDE S</emphasis>oftware <emphasis remap="bf">D</emphasis>evelopment <emphasis remap="bf">K</emphasis>it), 它包括了
KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>, KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm>, KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>(在地址 <ulink url="http://developer.kde.org">\|\|</ulink>处可以获得。)</para>
</listitem>
<listitem>
<para>KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>, 在地址 <ulink url="http://members.telecom.at/~johsixt/kdbg.html">\|\|</ulink>
处可以获得。</para>
</listitem>
<listitem>
<para>KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm> (在地址 <ulink url="http://www.kde.org">\|\|</ulink>处可以获得。)</para>
</listitem>
</itemizedlist>
</para>

<para>KDevelop已在装有SuSE Linux 5.2系统、AMD k4200、64MB RAM的机器和装有SuSE Linux
6.0、Intel 200 MMX、128MB RAM的机器上经过测试。</para>

<para>就作者所知，SuSE Linux和FreeBSD包含了所以必需的软件包，其中有a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>和
enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>软件包，这样您就不会遇到安装第三方软件的问题了。</para>

<para><emphasis remap="bf">文档:</emphasis>	</para>

<para>为生成KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>库文件,您需要kde库软件包,这在你系统中作为KDE项目提供的资源
里或在你软件和<emphasis remap="bf">Kdoc <indexterm remap="idx"><primary>Kdoc</primary></indexterm></emphasis>的资源软件包里可以获得。(包含在KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm>中).</para>

<para>我们还在我们的主页上提供一个安装后集成在documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>文档浏览器中
的C/C++Reference <indexterm remap="idx"><primary>Reference</primary></indexterm>参考,主页地址为<ulink url="http://www.kdevelop.org">\|\|</ulink>.下载软件包后将<literal remap="tt">root</literal>源
文件拷贝至您的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>目录中,并用<literal remap="tt">tar zxvf c&&lowbar;;c++&&lowbar;;reference.tar.gz</literal>---------
它.这样这一参考就在文件树中可见了;否则在浏览器中选择这一参考书会出现一个错误的页
面,这是Kdevelop的主页,它提供下载并叙述了安装过程.</para>
</sect1>

<sect1 id="index-5">
<title>编译和安装</title>

<para>为了在您的系统上编译和安装Kdevelop,请打出Kdevelop发布软件的基本目录中的以下内
容:</para>

<para><screen>	&&percnt;; ./configure
	&&percnt;; make

	(作为超级用户)
	
	&&percnt;; make install
</screen>
</para>

<para>Kdevelop使用了<literal remap="tt">autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm></literal>,因此您编译起来就不费力气了。</para>

<para>为了编译Kdevelop CVS快照，请打出以下内容 :
<screen>	&&percnt;; make -f Makefile.cvs
	&&percnt;; ./configure
	&&percnt;; make

	以超级用户身份：
	
	&&percnt;; make install
</screen>
</para>

<para>如果您的系统的make-command <indexterm remap="idx"><primary>make-command</primary></indexterm>是<literal remap="tt">gmake</literal>,打出<literal remap="tt">gmake</literal>而不是<literal remap="tt">make</literal>。</para>
</sect1>

<sect1 id="kdevelop-1">
<title>启动KDevelop</title>

<para>如果您使用KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>管理您的窗口，Kdevelop可以通过选择
"K"&-&gt;;"Applications"&-&gt;;"Kdevelop 1.x"来启动。Kdevelop支持KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-Mime-types,
因此您还可以通过选择一个Kdevelop项目文件（".kdevprj",由KDEvelop项目图标显示。
如果使用的是其他窗口管理程序，请打开一个控制台并打出：
<screen>&&percnt;; kdevelop
</screen>
</para>

<para>为使kdevelop启动时打开一个以存在的工程，请将目录变为项目目录并打出：
<screen> 	
&&percnt;; kdevelop  &&lt;;yourProject&&gt;;.kdevprj
</screen>

在每一个用户帐号下Kdevelop都会在第一次使用时请求<link linkend="The-Installation-Program">安装程序</link>
自动安装程序，允许对最需要的选项进行快
速设置。如果您的安装出现混乱，您可以在任何时间进入时重新设置。</para>

<para><screen> 	
&&percnt;; kdevelop  --setup
</screen>
</para>

<para>或者，当您使用KDE时,通过选择"K"&-&gt;;"Develop"&-&gt;;"KDevelop Setup"。</para>
</sect1>

<sect1 id="the-installation-program">
<title>安装程序</title>

<para>Kdevelop有一个自动安装程序模块，无论何时当Kdevelop被启动时就可以把它激活，
而kdevelop设置文件并不存在。我们建议您在安装Kdevelop环境时遵循安装步骤--选择"
进行"选项以自动检查您的系统及建立你的Kdevelop环境。</para>

<para>安装对话的按钮需要执行以下步骤：</para>

<para><emphasis remap="bf">帮助:</emphasis>  这会启动KDE帮助程序。</para>

<para><emphasis remap="bf">进程:</emphasis> 这将启动安装程序并执行以下步骤：
<orderedlist><listitem>
<para> 检查 make/gmake, autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>, autoheader, automake <indexterm remap="idx"><primary>automake</primary></indexterm> 和 perl 以生
成和编译Kdevelop产生的新的应用程序。如果安装了gmake,make-command <indexterm remap="idx"><primary>make-command</primary></indexterm>会在使用
gmake时被自动安装。其他编程时用到的命令行选项不久后可在setup <indexterm remap="idx"><primary>setup</primary></indexterm>dialog中由选
项菜单设置，在Unix环境下的开发说明会在<link linkend="Programs">编程篇</link>
中介绍。
</para>
</listitem>
<listitem>
<para> 检查 KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm> 和 glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm>.  如果找到，会允许在下一步生成一个新的
KDE-Library <indexterm remap="idx"><primary>KDE-Library</primary></indexterm>documentation文档和search index <indexterm remap="idx"><primary>search index</primary></indexterm>搜寻索引。
</para>
</listitem>
<listitem>
<para> 检查 a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm> and enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 以保证printing <indexterm remap="idx"><primary>printing</primary></indexterm>打印可用。这些程
序的任何一个都必须安装以保证正常printing <indexterm remap="idx"><primary>printing</primary></indexterm>打印。如果任意一个未安装，你可以在
以后的任一时间在你的选项中完成它而无需再次运行setup <indexterm remap="idx"><primary>setup</primary></indexterm>安装程序。</para>
</listitem>
<listitem>
<para> 检查 KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>, KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm> and KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>.  我们鼓励您安装这
些程序，他们是生成一个完整的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-applications应用程序的好帮手。注意到
KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>在Kdevelop中被直接用于debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>调试你的当前项目；KiconEdit/被
用于表示和编辑文件浏览树中选中的pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>。如果被发现，KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>程序，
KiconEdit <indexterm remap="idx"><primary>KiconEdit</primary></indexterm>程序和Ktranslator <indexterm remap="idx"><primary>Ktranslator</primary></indexterm>程序会在Kdevelop菜单条的Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>工
具菜单中被设置为可用。其他工具可以在其后通过选择选项菜单中的Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>...被加
到Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-menu中。
</para>
</listitem>
<listitem>
<para> 检查程序的总结：安装程序列出它所发现的和未知的程序。如果要推荐一个需要的
程序，我们会给出特别的暗示。
</para>
</listitem>
<listitem>
<para>检查 Qt-Documentation <indexterm remap="idx"><primary>Qt-Documentation</primary></indexterm> path 文件路径：它将检查你的系统中用于文档的几
个标准的路径，并自动设置路径。如果你的Qt-Documentation <indexterm remap="idx"><primary>Qt-Documentation</primary></indexterm>文档由于未安装，或
者你的系统把它放在另一个位置而没有被检测到，信息框会被弹出以询问你是手动设置正确
路径还是继续。选择手动设置按钮会返回主安装窗口，并显示一个编辑区域，右置按钮以选
择路径。特别的是，这是在qt/html目录中的。然后，再次选择"Proceed"选项，安装过程
可以继续下去。
</para>
</listitem>
<listitem>
<para> 如果 KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm> 被检测到，系统会询问你是产生还是更新你的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-library
documentation库文档。为此你需要将kde-libraries作为资源。对已从发布的软件安装了
KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>的Linux的使用者，我们建议你将你系统中的kdelibs软件包资源拷贝并解压；
而安装了kdelibs软件包的免费BSD的用户则应该查看他们的相关文件包。如果你并非以上
两种情况，你应该从地址<ulink url="http://www.kde.org">\|\|</ulink>下载这些资源并将其安装在你的
系统中。如果你想使用<ulink url="http://developer.kde.org">\|\|</ulink>提供的文档包，请取消生成
此文档，继续产生search index <indexterm remap="idx"><primary>search index</primary></indexterm>搜寻索引。安装程序完成，而且Kdevelop已经启动
以后，在Kdevelop安装程序对话框中给解压文档包设置路径，并再次运行search index <indexterm remap="idx"><primary>search index</primary></indexterm>搜寻路径及setup <indexterm remap="idx"><primary>setup</primary></indexterm>，这可在对话的同一setup <indexterm remap="idx"><primary>setup</primary></indexterm>page页面中找到。
"更新 KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-Library documentation/库文件"对话框为使用缺省路径定位
$(HOME)/.kde/share/apps/kdevelop/KDE-Documentation中的文档而设置。你唯一需要做
的一件事就是在对话框中选择顶部的选择按钮，选择到达你在系统上展开的资源库的路径并
按下OK。例如，如果你是从<ulink url="http://www.kde.org">\|\|</ulink> 处得到的kdelibs.tar.gz
软件包并把它下载到了本地目录，你需要启动一控制台或计算机终端并进入"tar zxvf
kdelibs.tar.gz"。这会将资源放入目录$HOME/kdelibs，那时它的每一子目录的库中已包含
了资源，例如kdecode，它会在／home/rnolden/kdelibs/kdecore。现在，你必须输入KDE
库文件对话框的路径会成为所有库的路径，在例子／home/rnolden/kdelibs中。在按下Ok 按
钮以后，安装窗口的信息框会表示文档正逐步生成，你需要等待下一信息。</para>

<para><emphasis remap="bf">注意:</emphasis> 在多用户系统multi-user system <indexterm remap="idx"><primary>multi-user system</primary></indexterm>或为用户帐号有disk-quotas <indexterm remap="idx"><primary>disk-quotas</primary></indexterm> 的
系统中，每一个用户HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>documentation文档的完全安装是对磁盘空间的极大浪费。
在此情况下，应该请你的系统管理员在根部帐号下under the root account运行Kdevelop，
允许在系统根目录下进行写操作。然后在KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-directory目录里安装文档
$KDEDIR/share/kdevelop/KDE-Documentation。然后正确的路径可以随后在Kdevelop的
setup <indexterm remap="idx"><primary>setup</primary></indexterm>dialog中建立，由"Option"-menu <indexterm remap="idx"><primary>"Option"-menu</primary></indexterm>进入。</para>
</listitem>
<listitem>
<para> 如果系统检测发现你的系统上有glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm>程序，你可以建立一个查找
数据库。查找数据库可用选项建立，包括KDE-Documentation <indexterm remap="idx"><primary>KDE-Documentation</primary></indexterm>和Qt-
Documentation <indexterm remap="idx"><primary>Qt-
Documentation</primary></indexterm>(缺省)。此外，KDEvelop文档会被包括入内并编入索引。如果你还有其他
你希望索引的文档，你可以选好目录并将它们也加入索引程序。
</para>
</listitem>
<listitem>
<para> 在建立search index <indexterm remap="idx"><primary>search index</primary></indexterm>搜寻索引时，安装窗口会弹出一个信息框，说明安装正
在进行。
</para>
</listitem>
<listitem>
<para> 如果所有安装步骤都已正确执行，最后一个信息框会告诉你Kdevelop会在你按下OK
后启动。注意：你可以选择选项菜单进入<link linkend="General-Configuration">Kdevelop Setup</link>安装对话框，设置另外的选项，例如自动存盘。</para>
</listitem>
</orderedlist>

<emphasis remap="bf">取消:</emphasis>  会弹出警告框，说明安装过程将被取消。这一警告框允许你选择返回安装
（"返回"）或者在缺省参数下启动Kdevelop（"继续"）。注意：这样你就必须利用选项菜单
提供的configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>s配置对话框自己设置所有的选项。</para>
</sect1>
</chapter>

<chapter id="programs">
<title>程序篇</title>

<para>　现在Kdevelop已经正确安装完成，最常用的选项也已设置完毕，你可能很想知道它是否
如它所承诺的一样好用。本章将就程序是如何由GNU工具创建的作出总体指导，尤其要说明
Kdevelop在此过程在中所起的作用。</para>

<sect1 id="the-compiler">
<title>编译器</title>

<para>Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>实际上是你系统上的一个程序，它必须最小安装以创建运行的程序；它是将
源代码编译为目标文件，并生成程序的部件。
一般来说，你可以这样开始：
打开一个你喜欢的编辑器――注意不要使用文字处理器。打出例如以下字段以创建你的第一
个程序的源文件：</para>

<para><screen>#include &lt;iostream.h&gt;

int main(){

cout &lt;&lt; "Hello World" &lt;&lt; endl;

}
</screen>

好，实际上程序所有要做的事就是以标准output <indexterm remap="idx"><primary>output</primary></indexterm>输出打印出字符串"Hello World".但
这仅仅是建立这个程序的源代码，而并非程序本身。因此，我们需要一个Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编
译器，在此例中是一个C++-Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器，例如g++。这样我们就可以将源代码保
存为文件例如myprogram.cpp，并可由文件名（在控制台上）激活Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器:
<screen>g++ -o myprogram myprogram.cpp
</screen>

然后我们就可以启动我们的程序了――只需在控制台上打出<literal remap="tt">myprogram</literal>，程序就会
打印出字符串；然后退出。</para>
</sect1>

<sect1 id="make">
<title>Make和 Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s</title>

<para>我拥有我所需要的一切东西：一个编辑器，一个Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器，然后我就可以执行
我自己的C++程序了。但事情并非总是那么容易。如果你有一个以上的源文件怎么办呢？当
你仅改动了一个程序时，你需要一次又一次的重新编译所有的源文件吗？由于你必须打出所
有的命令和选项，编译会变得越来越复杂和费时。为此，你可以先编写好一个所谓的"
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>"。你可以给它取任何名字，但不要和你要建立的程序名字一样。然后，你
应该安装好<literal remap="tt">make</literal>或者<literal remap="tt">gmake</literal>工具，或者可以保存某个项目的编译结果的任何其他
工具。把你的所有Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译命令以一定句法写入哪个Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>
并保存；然后你只需于控制台上打出<literal remap="tt">make</literal>或者<literal remap="tt">gmake</literal>到你的Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>文件
所在的目录，再确定任务，指挥Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>来创建你的应用程序。"创建"工具还有很多
其他优点，有很多功用。如果想了解完整概况，请打开一个控制台并打出：</para>

<para><literal remap="tt">man make</literal></para>

<para>或在KDEHelp中搜寻"GNU Make"，"System GNU Info contents"。至少，你已经认识到，为
什么一个开发者需要make工具来让使他的应用程序的编译更容易。现在，编写
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s不仅仅是一项手动工作，你还必须钻研所有整个句法和所有选
项。但这里有一个关于Kdevelop和任何Make-utility的好消息：你只需在<link linkend="General-Configuration">Kdevelop Setup</link>
KDE一般设置对话中设置好Make-命令就可以了。
所有由Kdevelop创建的项目都会使用那个Make命令来建立目标应用程序，而无须打任何命
令。只要在KDE的工具条上点击按钮，从第三条分隔线开始，或者在"Build"菜单中为Make
选择想要的工具。
然后工具条和build菜单会提供你需要的最常用的功能来由make完成这个累活。</para>

<para><itemizedlist>
<listitem>
<para> Compile File <indexterm remap="idx"><primary>Compile File</primary></indexterm> 编译文件：只有当你正着手于一项源文件时才是激活的。它用
正确的命令激活make来编译当前源文件。</para>
</listitem>
<listitem>
<para> Make建造: 访问make并创建你的目标文件。</para>
</listitem>
<listitem>
<para> Rebuild all全部重建: 重建整个项目。</para>
</listitem>
<listitem>
<para> Clean/Rebuild all全部清除/重建: 先清除项目目录，然后重新运行make。</para>
</listitem>
<listitem>
<para> Stop Build停止建造: 取消当前程序--这是最常用的，如果你观察make的工作情
况，仔细看你的源文件就知道。然后--啊--我忘了这件事了。。。你还必须修正你的代码。只
需点击"停止"，更正你自己所发现的错误，再重新运行Make就是了。</para>
</listitem>
</itemizedlist>
</para>

<para>但这并不是Kdevelop和make一起使用的唯一方式--对于KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>applications应
用，还有一些特别之处，例如为国际化创建消息文件。这些功能也被包括进来，所以你无须
再担心这些事了。
到现在，你已经了解了源文件，Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>及为什么需要make了。在下几节中，
我们会讨论由Kdevelop自动创建的项目是如何在大多数其他的使用<literal remap="tt">configure-</literal>script
脚本的Unix平台上被编译的。</para>
</sect1>

<sect1 id="configure">
<title>设置</title>

<para>本节的题目很可能让你疑惑：设置？有什么必须要设置的？谁来完成呢？好，假设你已经写
好了一个包含了Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>的程序。然后你想要发布它，但这些编译过的二进制代码在
你的系统上或是与你的系统兼容的机子上不能运行。为了支持其他平台，例如另外的Unix
系统或是如Alpha机、RISC机，你就必须重新编译这个程序。最简单的办法就是把源文件
包拷贝到目标机器并再次运行<literal remap="tt">make</literal>。但要是目标机器使用的是另一种Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>
编译命令或者在另外某方面在建立你的二进制时遇到了问题该怎么办呢？更不要说更困难的
情况了，例如你的程序和文档--例如KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>的安装路径，不能在一台机子上被安装到
<literal remap="tt"></literal>opt/kde/，而在另一太机子上被安装到<literal remap="tt"></literal>usr/local/kde/下。在这种情况下，你就
必须每次都重写Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>文件，以保证你的产品的正确编译和安装。
幸运的是，GNU工具甚至还提供了比<literal remap="tt">make</literal>还强大的工具--常用的automake <indexterm remap="idx"><primary>automake</primary></indexterm>
自动创建和autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>自动设置包。带auto的词听来总是很舒服，就好象是关于应用
程序设计的东西可以又快又轻易的完成，实际正是这样。</para>

<para>自动创建的目的一般是从你必须为你的项目书写的文件<literal remap="tt">Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm></literal>创建一
个所谓的<literal remap="tt">Makefile.in <indexterm remap="idx"><primary>Makefile.in</primary></indexterm></literal>文件。<literal remap="tt">Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm></literal>文件由宏组成，它们
可被翻译并可降低make的复杂度，所以<literal remap="tt">Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm></literal>文件可以比最终的
<literal remap="tt">Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm></literal>更安全、更快速的编写完成。</para>

<para>那么，是什么最终为我创建了Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>文件呢？是autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>自动配置。自
动配置要求项目拥有几个宏文件。那是那些由automake <indexterm remap="idx"><primary>automake</primary></indexterm>和一个叫做
<literal remap="tt">configure.in</literal>的文件创建的Makefile.in <indexterm remap="idx"><primary>Makefile.in</primary></indexterm>的文件，也包括宏。因此，
Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>和.in's都包含了宏，它决定了创建软件的方式：源文件的编译方
式，哪些文件属于这个软件包，以及最终的二进制或？进制文件在创建后用的名字。在另一
方面，Configure.in则包含的宏则决定最终的配置--外壳在配置被执行的系统上将做
何种检测。那可以是，例如Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>command命令最终二进制将被连接所需的库，项
目所需的包含文件及其位置。</para>

<para>例如，你想写一个KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>应用。在你编写完资源代码以后，你想把你的程序发布到
用户社区，而每一个用户都必须在自己的机子上编译这个二进制资源。那么你就需要写一个
包含编译应用所需的宏的Configure.in文件。不论Qt库是否安装，那一个宏最
终在系统上展开成一个check，检测Qt头文件，KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>和头部等等。</para>

<para><emphasis remap="bf">总结:</emphasis>  为创建一个在不同的Unix-OS和其他机子上都可运行的GNU-编译应用，
你需要这样做：</para>

<para><orderedlist><listitem>
<para> 为你的应用写下代码资源</para>
</listitem>
<listitem>
<para> 为每个子目录编写Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>，包括你的项目的主要项目目录。</para>
</listitem>
<listitem>
<para>编写放于主项目目录的configure.in文件，包含说明系统要求的宏。</para>
</listitem>
<listitem>
<para> 运行 automake <indexterm remap="idx"><primary>automake</primary></indexterm>
</para>
</listitem>
<listitem>
<para> 运行 autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm></para>
</listitem>
</orderedlist>
</para>

<para>现在主要的工作都已完成，"自动创建"建立了Makefile.in <indexterm remap="idx"><primary>Makefile.in</primary></indexterm>，autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>启
动了configure.in并生成一个可执行的，称为<literal remap="tt">configure</literal>的外壳脚本。你所有接下来
必须完成的事就是用<literal remap="tt">.</literal>configure/执行它，脚本会运行你选中的checks。最后会生成
一个Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s，允许"创建"的最终执行。它会运行所有的Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s文件，
然后你就完成了。</para>

<para>看起来为写一个小程序，花费的人力可不少，该学的也不少，特别是如何编写正确的
宏。但仅仅是你提供在几乎所有的Unix系统上都可运行的应用这一事实本身，迟早也
是值得你的这些努力的。最后，你只为你的应用做一次这样的工作，万一你的项目的文件有
所增加，你只需往宏里加入文件就可以了。</para>

<para>现在，Kdevelop究竟有多支持这种类型的应用程序开发，而对程序员来说这究竟又有
多复杂呢？这里有个好消息是你甚至无须知道关于宏和scripts,的任何东西。所有细
节问题都已隐藏，使用起来轻松自如。因此由GNU工具都以对用户有好的方式创建应用:</para>

<para>只需根据你的应用的需求选择，用KappWizard <indexterm remap="idx"><primary>KappWizard</primary></indexterm>创建你的应用--那可以是一个纯
C++最终应用或某种使用Qt或Qt/KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>的GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>库的程序。所有工作自动完成，而
且你的项目已经包含由GDU工具和配置脚本的自动执行创建的Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s。</para>

<para>就是这样--你准备扩展你的项目资源，可以通过增加classes <indexterm remap="idx"><primary>classes</primary></indexterm>类，对话，翻译或
文档，这些都是自动化的。只需集中精力去做开发者的真正工作，那是为最终你想建立的应
用程序编制功能的。在大多数情况下，在使用Kdevelop时，你很可能都不会和
&lt;Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s打交道。</para>
</sect1>

<sect1 id="debugging">
<title>调试</title>

<para>以下这一、节会讲到一个开发人员广泛使用的术语：调试。它的意思是，虽然你的
Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>会生成最终的应用，你的应用可能无法运行或在执行时由于代码中所谓的"
臭虫而崩溃。由这种昆虫名来描述的程序错误的由来可追溯到计算机的历史；最初引起机器
崩溃的错误中，有一个并非是malfunction--臭虫是在计算机内部而引起机器瘫痪的。因此，
第一眼无法立即探测到的错误就被叫做"臭虫"。所以"debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>"调试的意思就是除
去不该有的臭虫。现在，你并不需要真正猎杀它们，假设今天的计算机设计了某种外部保护，
可以把臭虫排除在外。臭虫一定是在代码中被发现，大多数在完成一个程序的执行时会弹出
信息框"节段错误"。GNU还提供另一个叫做<literal remap="tt">gdb</literal>的工具，即GNU调试器。这一终端程序
允许监测程序的内部参数值和利用在代码中设置断点来观察程序的逐步执行。Gdb在每次程
序在执行中遇到断点时即中断程序的执行。但和大多数其他工具不同，调试器是由另一个程
序控制的，该程序为它提供前端，允许轻松观测其参数值，及在代码中设置断点。</para>

<para>为此，你的项目的应用是由debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>调试的Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译选项缺省创建
的，因而在可执行文件中存储另外的数据，以允许代码中参数值和路线的定位。作为gdb第
三方的前端，Kdevelop使用了KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>，即Kde调试器。要调试你的程序，你只需从建
立--菜单中选择"调试"，或按下由上面有幅眼镜的轮子来表示的相关工具按钮，以表明你西
哪个检测程序的执行即可。</para>

<para>然后Kdevelop会打开Tools-window <indexterm remap="idx"><primary>Tools-window</primary></indexterm>窗口并用KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>启动你的应用。
KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>界面会出现在Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-window窗口内部 ，允许你象在外部启动它一样的使
用它。</para>

<para>总的来说，以上步骤很清楚的说明了程序员在开始写他自己的应用时，必须执行的某些
步骤的必要性，并阐述了基于所有项目的一般观点。我们还解释了Kdevelop为一个开发者
的工作所起的作用，及它是如何支持为UNIX编程提供简易途径这一想法的。如果想知道关
于GNU工具的作用和目的的更多信息，请阅读随之提供的文档，一般可以通过<literal remap="tt">man</literal>命令
或在KDE帮助的"系统GNU信息内容"一节得到。</para>
</sect1>
</chapter>

<chapter id="development-with-kdevelop">
<title>利用KDevelop开发篇</title>

<para>本章中你会对如何使用Kdevelop及其内部的dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>对话框编辑器创建自己
的应用得到一个总体的了解。因此，所有工具在开发过程中所起的作用都会介绍到。如果你
是C++GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>设计和编程的新手，你可以阅读<ulink url="programming/index.html">Kdevelop编程指南</ulink>，它叙述了编程设计的基
本知识，并利用项目实例对Kdevelop的使用做了更为详细的说明，你可以一步一步跟着做，
来熟悉利用Kdevelop创建项目的方法。你还应该阅读<link linkend="Programs">程序篇</link>
程序篇来对Unix应用为什么要使用所提供的开发工具得到一个总体了解；这样在你看到关
于Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s等等是什么的参考时，这会使事情变的更容易。</para>

<sect1 id="kdevelop">
<title>什么是Kdevelop应用程序？</title>

<para>由Kdevelop创建的项目让开发人员能轻易的使用GNU标准开发工具。和自动创建的
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s相反，它们提供的不仅仅是创建Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>的一个更好的途径，还有
一个更好更安全的办法，通过autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>创建<literal remap="tt">configure</literal>脚本来提供快速改写以适
合不同的系统；而前者因为项目的复杂性，无论如何都必须编写。</para>

<para>除了一个C++Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器和开发库外，你的应用的发布并不要求终端用户安
装其他东西，通常情况都是如此；但是你可以发布你的应用的二进制包。在任何一种情况下，
你的产品的终端用户都不必要安装Kdevelop。为分发拟订资源代码，我们建议你也包括进
Kdevelop项目文件，这让其他开发人员能更轻易的处理你的源代码，如果他们也使用
Kdevelop的话。对于牵涉了几个也许在不同地方工作的开发者的项目，无论如何必须保证
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s的一致性，以使你运行时不至于出错。尤其是多种语言的应用程序，翻译
人员实际上并不和源代码打交道，除非它需要更正以得到翻译支持。不管怎么说，Kdevelop
通过加入他们的语言和减少他们的工作使之专注于翻译，来将其工作量减至最少，这些多时
值得感谢它的。
使用Kdevelop建立你自己的项目，你可以通过KappWizard <indexterm remap="idx"><primary>KappWizard</primary></indexterm>应用向导开始建立新
的应用。在那里，你还可以根据你所编写的程序的目标，设置项目类型。然后，你通过加入
widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>开始开发用户界面，widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>已经建立在库中，只需被你的应用访问，
或者通过对话框编辑器自我创建。下一步就是通过改变和扩展以由Kdevelop制作好的那些部
分，例如状态条，菜单条和工具条，扩展用户界面。由于资源代码收集在源文件中，也可以
通过为已存在的量增加新值来扩充它。所给资源也可以用作增加你的特定项的准则。在实现
将功能转化为方法后，这些方法可能是由dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>生成为空，可能已包含标准
用户操作的代码。你应该通过简单编辑所提供的SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>index file索引文件描述你的
应用程序的性能以扩充用户手册。最后一步即是生成翻译文件和把项目分发给翻译人员来完
成剩下的工作，以增强项目的国际化。</para>

<para>但即使对于非GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>应用设计人员，IDE也提供一个简便的方法来创建新项目；编
辑器和类编辑器加上Kdevelop强大的项目管理器，可以将开发时间缩短至功能的
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>实现所要求的最短值。</para>
</sect1>

<sect1 id="kdeveloptools-tools">
<title>关于KdevelopTools <indexterm remap="idx"><primary>Tools</primary></indexterm>工具的简要描述</title>

<para>利用Kdevelop你以选择一个软件包，与其他工具一起使用，它会提供给你一个完美的，
伸缩度高的环境来在Unix系统下进行面向对象的应用程序开发。总的说来，Kdevelop由编
程环境，dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>对话框编辑器组成；除此之外，其他所需的对设计应用有帮助
的程序都以某种方式安置于内。</para>

<sect2 id="index-11">
<title>编程环境和对话框编辑器</title>

<sect3 id="index-12">
<title>编程环境</title>

<para>编程环境是Kdevelop为创建和支持项目所提供的用户界面，无疑它还使用了很多其他
工具，但简化了其使用。它内置的编辑器和Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>帮助浏览器，以及类浏览器
减少了开发中通常是由程序员承担的工作量。使用简便使得在Unix系统下的编程本身成为
一件乐事，很可能会导致发布周期缩短，开发质量更高。从此，你可以通过所有细节管理你
的项目，通观全局管理好你的classes <indexterm remap="idx"><primary>classes</primary></indexterm>类，而无须为工作启动另一个控制台，而所有
的用户界面的集成也使你只需在X下在一个窗口内工作，而不必监视桌面上铺满的众多窗
口。</para>
</sect3>

<sect3 id="index-13">
<title>对话框编辑器</title>

<para>Kdevelop内置的对话框编辑器提供利用Qt和KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>libraries/设计用户界面的简便
途径。它利用鼠标做几乎所有的事，这一简便方法允许为应用和应用直接转换为C++代码快
速创建对话和主视，这是直接被加入项目的。dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>已被内置于余下的用户
界面，你的可用命令和工作在编程模式下一样。这就允许了例如对话的创建，output <indexterm remap="idx"><primary>output</primary></indexterm>
输出代码的生成和它在程序中利用make-command <indexterm remap="idx"><primary>make-command</primary></indexterm>s的可用性直接测试，你仍然可以控
制Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> output <indexterm remap="idx"><primary>output</primary></indexterm>编译器输出，而无须重新切换回编程界面。要想得到更详
细的信息，请参见<link linkend="The-Dialog-Editor">对话框编辑器</link>。</para>
</sect3>
</sect2>

<sect2 id="kappwizard-kappwizard">
<title>KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm> 及类工具</title>

<para>Kappwizard及类工具为项目生成提供条件，而自动代码延展旨在让应用程序的生
成尽可能的简单和安全，它们也为Qt <indexterm remap="idx"><primary>Kappwizard及类工具为项目生成提供条件，而自动代码延展旨在让应用程序的生
成尽可能的简单和安全，它们也为Qt</primary></indexterm> Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>编程及类工具初学者来亲自实际工
作，并深入应用程序的细节，这样可以快速的得到结果。</para>

<sect3 id="kappwizard-kappwizard-0">
<title>KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm></title>

<para>Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>旨在创建功能完备的应用项目，这些项目利用GNU标准工具随时可运
行，而对GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>-programs,则是利用了KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>和Qt库。通过仅仅指定所要求的最少
信息，用户可以在数秒钟内开始一个新的项目的工作。访问KappWizard <indexterm remap="idx"><primary>KappWizard</primary></indexterm>是利用
Kdevelop为用Kdevelop创建一个新的应用所需采取的第一步。</para>

<para>Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>提供给你一个包含了运行应用所需的所有C++源代码的所谓的应用框
架。在你指定项目的名称，设置了所需功能，你的新项目就可以生成，你就有了一个已包含
很多功能（对KDE或Qt库）的完整应用。甚至还无须亲自打出一行C++代码。当指定程序
生成起提供的一整套的选项，你的应用程序就已经包含了：
<itemizedlist>
<listitem>
<para>一个SDI界面工具（每个应用窗口可对一个文档操作），基于文档--浏览--控制者模式。</para>
</listitem>
<listitem>
<para>为打开和保存文件设置的菜单和状态条，和priting <indexterm remap="idx"><primary>priting</primary></indexterm>打印对话框一样。</para>
</listitem>
<listitem>
<para>一个工具条，状态条，以提供完整功能。</para>
</listitem>
<listitem>
<para>一个帮助系统，包括一个基于SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>的用户手册和状态条帮助。</para>
</listitem>
<listitem>
<para>为项目当前状态设置的一个完整的基于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>的 API <indexterm remap="idx"><primary>API</primary></indexterm>(应用编程界
面)文档。</para>
</listitem>
<listitem>
<para>通过make建造的安装路径。</para>
</listitem>
</itemizedlist>
</para>

<para>KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm> 通过项目菜单的"新建"项可用。</para>
</sect3>

<sect3 id="index-14">
<title>类工具</title>

<para>类工具这一术语描述了开发者可于项目的各种功能，它不仅通过面向对象的语言，还有
以对象面对的方式使用代码资源。使用classes <indexterm remap="idx"><primary>classes</primary></indexterm>可以以很灵活的方式扩充项目，容纳
感用户将注意力集中于项目包含的类上。Kdevelop提供的工具是类生成
时的类浏览器。每个都提供了许多自动功能。</para>

<sect4 id="index-15">
<title>类生成器生成新类</title>

<para>在用Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>生成一个项目后，你作为开发者的工作会增加一套classes <indexterm remap="idx"><primary>classes</primary></indexterm>
类，以匹配你的应用程序的设计。不使用Kdevelop的经典程序是创建一个新的头部和源文
件，手动将之加至相关Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>并开始编写classes <indexterm remap="idx"><primary>classes</primary></indexterm>,declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>和
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>。为简化整个过程，类生成器让你仅需通过以其名字指定新的类。被
继承的类，继承属性及更多的信息，比如项目属性的类文档来完成它。另外，你还可以改变
生成器预先设置的文件名，及类是否缺省地设置为Qt-signal/slot可用。</para>

<para>余下的工作会自动完成，你无须关心Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>，文件和类本身。一个新的"建
立"已足够在编译过程中包含新类。类浏览器会在增加类后自动更新，因而declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>
和implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>立即可用，你也可以开始着手于类的扩展工作了。类生成器可在项
目菜单中，通过"New Class <indexterm remap="idx"><primary>New Class</primary></indexterm>"项进入来激活。</para>
</sect4>

<sect4 id="index-16">
<title>类浏览器</title>

<para>类浏览器在编辑器窗口左边以数的形式展示你的项目所有类型的对象和功能。类语法分
析器为方法和classes <indexterm remap="idx"><primary>classes</primary></indexterm>扫描所有的文件，并让它们通过符号可用。除此以外，文本菜
单提供一个专业化的功能，通过专注于classes <indexterm remap="idx"><primary>classes</primary></indexterm>和函数着手于资源代码。</para>

<para>选择一个将导致包含declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>的文件被打开；在方法和函数上它会给你看
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>。要想得到完整的描述，请参见<link linkend="The-Class-Browser"> 类浏览器</link>。</para>
</sect4>
</sect3>
</sect2>
</sect1>

<sect1 id="index-17">
<title>开发过程</title>

<para>用Kdevwelop开发的应用一般可以分为两个主要的步骤：首先，你必须利用
Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>生成一个程序轮廓，然后剩下的开发工作必须利用Kdevelop的特色来完
成。它只要求你作为程序员的工作能力。为描述开发过程，我们假设你希望建立一个
Qt/KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>应用，它说明了需要使用Kdevelop的大多数特色来着手于这些项目类型，因
此你有一个一般的做法。</para>

<sect2 id="index-18">
<title>建立程序框架</title>

<para>开始创建你的应用，你一般需要访问Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>；输入项目名并生成程序，通过
这一步骤，应用向导会自动为应用创建项目文件并将Kdevelop区域插入在随后展开应用时
会用到的Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>'s,项目文件是你在以后打开项目时必须装载的文件。</para>

<para>你通过项目菜单进入"新建"项，访问Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>。当向导出现时，你还必须在第
一页指定项目类型，选择"下一页"会将你带到下一页，你必须在此插入项目名，版本，目录
和你的个人选项，第三页会提供更多个人选项，第四页和第五页允许根据你的选择自动插入
头部和implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>编辑头文件。如果你已经有了你想要使用的头文件，你也可以
选择那些文件。最后一页包含了一个output <indexterm remap="idx"><primary>output</primary></indexterm>窗口和一个错误信息窗口。当选择"生成"
时，你的应用即被生成。所执行的操作在output <indexterm remap="idx"><primary>output</primary></indexterm>窗口可见。如果"准备"出现在
output <indexterm remap="idx"><primary>output</primary></indexterm>窗口，Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>已经完成，你可以通过选择"退出"返回编程环境。为
建立二进制文件，你还可以通过从创建菜单中选择"make生成"，或选择工具条上的相关按
钮。你还可以通过从创建菜单中选择"执行"来测试已有功能。</para>
</sect2>

<sect2 id="index-19">
<title>开发一个应用</title>

<para>本节将描述使用Kdevelop和dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>-开发应用程序的开发阶段--所有的
工作都可在IDE中完成。</para>

<para>开发步骤一般说来涉及编辑源文件，编译项目代码及Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>连接所有对象文件至最
终二进制的连接过程。妨碍编译连接的错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>或是通过debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>调试会话
可以查找到的臭虫都应该找出。最后，文档必须要扩展，翻译必须要加注。但以上各个步骤
都是可以互相混杂，要想描述如何建立你自己的应用程序的一般方法并不是那么容易。典
型的情况是，通常的程序先创建项目所有的可视部件，例如，主视，和设置路径的对话框，
设置选项的对话框；在生成源代码，实现所有需要的连接，例如：改变菜单条和工具条，为
新菜单词条加入状态条帮助，并用显示你的对象给新的成员填充功能。然后你就可以编译你
的应用，测试其性能，修正errors <indexterm remap="idx"><primary>errors</primary></indexterm>，再重新检测。后面几节会说明这些工作是如何完
成的；为建立你特别的应用，你可以只选择另一种方式--Kdevelop给你足够的灵活度来决
定什么时候做什么。</para>

<sect3 id="index-20">
<title>用户界面</title>

<para>一个项目的用户界面实际上是用户所见的部分及它和程序的桥梁。因此，一个程序一般
都含有菜单条，工具条和状态条，就象有主视的一样（例如编辑器的文本框键入），
Kappwizard <indexterm remap="idx"><primary>Kappwizard</primary></indexterm>创建的应用已经包含了一个复杂的功能--框架结构会包含标准元素，例如
条和按钮。当你开发你的应用时，你必须扩展给定的结构才来让程序有你想要提供的交互性。
这一工作的步骤之一就是对话框设计，例如，改变画图应用中的笔刷宽度值。这可由Kdevelop
内部的对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>来轻易完成。现在，你如何创造那些美观的对话框呢？由于
Qt-library <indexterm remap="idx"><primary>Qt-library</primary></indexterm>是GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>工具箱，它提供了一个所谓的"widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>"基本套件；例
如，表示纯文本的标签，文本输入的行编辑，导航按钮及选择命令。
用户界面中除了这些"低水平"的部件，还提供标准的对话，随时可用，例如打印对话框
printing <indexterm remap="idx"><primary>printing</primary></indexterm> 。KDE库KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>是基于Qt-库的，它包括某些对话的替代及
可用于你的应用的其他widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> 。这样，当你开始设计你的用户的应用操作时，你应
该让你自己尽量的熟悉随Qt 和 KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>提供的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。Qt的在线文档为大多数
widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>提供了快照，因此你应该先去看看。然后我们建议你仔细看看KDE-
UI库, 它提供了其他一些widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。象KHTML <indexterm remap="idx"><primary>HTML</primary></indexterm>库一样的库包含了很专业化的
widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> ，很多程序都在使用。它只是简化了应用的设计，例如Qt提供的预先定义
的对话。对于你自己的对话，这些较低级的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> 正是你所需要的。一个对话仅仅
由不同的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>结合在一起组成了一个界面，它在技术上是由C++代码编程于一个
从<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal>中派生出的一个类，或一个更专业化的继承了 <literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal>
的对话类。因此使用widget的程序需要一个widget类的对象。--这几乎是你要理解对话及
视图是如何使用的所有东西。</para>

<para>现在Kdevelop的对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>提供一个很好的方法来简化你的对话的建
立过程，它可以可视化得创建对话和用户界面，你无须再将对话和纯C++ 代码结合再一起。
--这是创建界面的较为复杂的方法。通过选择视图菜单中的相关条目可切换至对话框编辑器
dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> (或通过工具条按钮)。你可以看见Kdevelop的界面改变了，但是，
菜单条和工具条仍然看来十分熟悉。这使得在两种工作模式间前后切换变得十分容易，你很
快会习惯于它们的。然后你可由你所愿建立你的视图和对话框。并设置所有视图包含项目的可
用设置。当你完成后，从建立菜单中选择"生成源"；对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 及
项目管理器会负责剩下的事情。你可以通过选择"生成"或"执行"来测试是否一切正常, 这会
建立你的包含了你的新资源的应用。但是不要期望对话框已经可用--这通常是一个开发者工作
完成implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>的一般方式。但不要担心--这也并非那么困难。要想得到关于创
建对话的更多信息，请参见<link linkend="The-Dialog-Editor">对话框编辑器</link>, 实
例及指导可参见<ulink url="programming/index-6.html">KDevelop编程手册</ulink></para>
</sect3>

<sect3 id="index-21">
<title>捆绑新元素</title>

<para>在你创建了你的用户界面并生成了你的资源后，你可以准备让你的应用通过对象来使用他
们。如上所述，通常一个基于GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>的程序会包含菜单条和主视；另外主视可由控制条
操作,它是主应用类及其连接的文档对象的一部分。按照面向对象的设计, 你可以将给出的
结构描述为"文档--视图--控制器"模式。这种模式通过介绍对象在程序中的作用描述了对象
在应用中的基本功能。控制器代表协调主应用的一类，它通过菜单条及工具条，状态条提供
用户交互功能。文档类的任务是代表用户使用的文档。因此，文档类应该可以完成所有的比
如装载文件和重新保存文件的操作。现在视图位于应用窗口中央, 为用户以可视化方式显示
文档的一部分，并提供所有功能使用户可改动数据。由于控制条和工具条已出现，你的工作
将是创建主视，以及用户可以用于改变任何设置或使用另外功能的其他对话。</para>

<para>要建立你的主视，为你的应用生成的源代码已经以&&lt;;YourApplication&&gt;;形式包含了一
个类，继承<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal>类的视图(这是操纵Qt中可视化界面的最小类，因此也在
KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>中)。 总的来说,展开给定的来有三种不同的方法:
<itemizedlist>
<listitem>
<para>去掉文档--视图结构并使用一个预先定义的已包含了很多功能的"大
"widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>，只需去掉视图类并由另一类代替。</para>
</listitem>
<listitem>
<para>改变视图类的继承，改变至，例如，QmultiLineEdit，这样你的应用会变成一个编辑
器。</para>
</listitem>
<listitem>
<para>如果你的主视窗口要包含若干独立部件，你就需要用dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>创建你需
要的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>及其classes <indexterm remap="idx"><primary>classes</primary></indexterm>，并在连接后可生成主视的视图类生成器中创建该
classes <indexterm remap="idx"><primary>classes</primary></indexterm>的对象。</para>
</listitem>
</itemizedlist>
</para>

<para>对对话来说，情况就有些不同了。通常的做法是从菜单条或工具条上按钮进入，访问对话框。
在你创建了你的对话并生成资源代码后，类就可用于创建作为对话的对象了。所以你先看一
下，在菜单条找出适当的位置来加入用户选择后可打开对话的入口。如果给出的菜单与你的
要求不符，你可以创建一个象其他菜单一样的新的弹出菜单，插入你的项目及当你的菜单被
选中后你想要访问的地方。通过创建对话类实例实现slot，并用基础类提供的成员函数
member functions <indexterm remap="idx"><primary>member functions</primary></indexterm>访问对话框。而且你还必须为菜单项指定ID。应用程序框架把已给
出的ID收集于文件resource.h中，因此你只需加入ID并给它一个新编号。这样你就完成
了--另外你还可以创建另外的工具条按钮并加入状态帮助信息。现在你们的应用给用户提供
了可视的新功能。接着你必须加入你的对话将用到的操纵任何参数值的方法的实现
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>。最后，访问你的生成工具或"执行"，改写过的文件会被重新编译；
这样你改动的结果可以立即测试。</para>
</sect3>

<sect3 id="index-22">
<title>完整开发过程</title>

<para>以上我们已经讨论了关于如何利用KDE开始建立新的应用及如何扩展用户界面的一般方法。
现在，这些是IDE帮助你的标准步骤，但KDE却不仅仅为你提供创建应用及其可视化部件的
工具。下面我们将对它对推动应用开发提供的功能做一个简要描述。</para>

<sect4 id="index-23">
<title>源代码管理</title>

<para>Kdevelop IDE提供给编程人员很多的方法使他们在最短的时间内完成其目标。如以上所述，
KappWizard <indexterm remap="idx"><primary>KappWizard</primary></indexterm>和dialogeditor <indexterm remap="idx"><primary>dialogeditor</primary></indexterm>缩短了你手工要达成同样结果一般所需的时间。但
这并不包括一个程序员通常必须做的工作：为应用的完成努力工作，以使终端用户能正确的
执行。那么，为什么KDE是你希望用做编程环境的IDE，包括它的即使是非GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>应用
的创建作用？</para>

<para>无疑，IDE总体的管理着你的项目；那就是说，你无须小心对变化的保存，Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>
的生成，等等--这提供了整个项目的管理，KDE会在任何一个C++应用开发中不遗余力的为
你服务。你可以很容易的理解，把管理的任务从程序员手中接过后，他可以更专注于源代码
的编写工作了。在通常遍布于项目中许多不同的文件，因此你可以分离一定的文件。但这意
味着仍然要努力工作--作为开发人员，你仍然不得不创建这些文件和编写这些标准内容，例
如包含了数据，作者名的头部文件，及例如代码的执照术语。另外，这要求你必须记得你的
函数，及类declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>s和implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>在何处。因此，KDE包含了类工具
--各种各样的操作，他允许快速操作和将开发者的注意力从文件转移至对象classes <indexterm remap="idx"><primary>classes</primary></indexterm>，
结构和方法。类生成器让你可以轻易创建一个包含继承，attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>，和文档的新的
类。对于面向对象的工作，类浏览器把你带到你的对象的位置；而代码实际在哪个位置已不
再有什么关系了。浏览器自动扫描所有资源并在有增改时自我重建以跟上你的工作，使你可
以直接得到新的代码。通过上下文菜单,类浏览器会提供更多的功能，例如，将你带到实现
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>或成员函数member functions <indexterm remap="idx"><primary>member functions</primary></indexterm>的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>。然后，成员的增加
可以通过对话来完成--不必寻找文件和你要加入的项的位置。最后，你可以通过类工具对话
得到你的项目的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>的更为专业的视图，它会以树的形式显示类classes <indexterm remap="idx"><primary>classes</primary></indexterm>及其
对象的作用，内容和继承。要想得到更详细的信息，请参见<link linkend="The-Class-Browser">类浏览器</link></para>
</sect4>

<sect4 id="index-24">
<title>建立并执行你的应用</title>

<para>Kdevelop IDE是特别设计来为你完成你必须定期执行的所有那些步骤，例如建立和执行你
的程序及在源代码中定位errors <indexterm remap="idx"><primary>errors</primary></indexterm>。</para>

<para>你可以开始你的建立过程，通过：
<itemizedlist>
<listitem>
<para>单击工具条上的"建立"或"全部重建"符号</para>
</listitem>
<listitem>
<para>或从"建立"菜单中选择"建立"或"全部重建"</para>
</listitem>
</itemizedlist>
</para>

<para>要执行你的应用，请选择
<itemizedlist>
<listitem>
<para>工具条中的"执行"或"编译"符号(由你的程序启动 KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm> )</para>
</listitem>
<listitem>
<para>建立菜单中的相关菜单项</para>
</listitem>
<listitem>
<para>或者通过"由Arguments 执行"来用其他arguments启动你的应用</para>
</listitem>
</itemizedlist>

要想得到关于建立过程的更多信息，请参见<link linkend="Projects">项目篇</link>。</para>
</sect4>

<sect4 id="index-25">
<title>寻找程序错误</title>

<para>由于一般 errors <indexterm remap="idx"><primary>errors</primary></indexterm>错误会在创建过程（由Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> 编译器监控 ，并且由
于它们源于代码的句法错误，一般被称作句法errors <indexterm remap="idx"><primary>errors</primary></indexterm>错误。）或应用的执行过程中发
生，它们必须由程序员找到并除去。 要定位errors <indexterm remap="idx"><primary>errors</primary></indexterm>错误,开发者需要得到引起错误发
生的确切信息。 如上所述，Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>编译器本身可以检测句法errors <indexterm remap="idx"><primary>errors</primary></indexterm>错误,导
致可执行文件无法建立(这在Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> 连接器检测到"unresolved 信号时也有可能发生
--参见连接器选项<link linkend="Linker-Options">连接选项</link>). 它会尽可能详细
的对错误作出描述，这样错误就可以找到并去除。在创建过程,你可以看见output <indexterm remap="idx"><primary>output</primary></indexterm>输
出窗口弹出，告诉你你的make工具和编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>要说的话。万一遇到了错误
errors <indexterm remap="idx"><primary>errors</primary></indexterm>或者警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>, 只要在错误行按动鼠标按钮，编辑器就会打开该文
件并将光标移到错误行。这也可以通过"视图"菜单中的"下一个错误"和"上一个错误"条目或
通过相关键盘快捷方式shortcuts <indexterm remap="idx"><primary>shortcuts</primary></indexterm>来完成。你会发现这十分好用，为你到达错误
节省了不少时间,这样排除状况只要求你作为程序员的相关知识。
实时错误是在执行时出现的，大多数情况下会导致节段错误，有时很难发现。因此，
你可以让编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>把信息加入二进制文件以监测源代码的执行。调试器则是允
许你通过启动应用并在代码中为需中断执行的地方设置断点来完成它的另一类程序，因此你
可以严格控制其实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>s 而且通过这样至少可以检测引起错误发生的
行。找出真正的引发原因则是另一项任务；它要依靠程序员对它的定位。<emphasis remap="bf">gdb</emphasis>是GNU编
译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>提供的调试器，象<emphasis>ddd</emphasis> 或<emphasis>KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm></emphasis> 一样的程序是允许更
方便使用的前端。因此KDevelop使用KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm> 并让你可以通过"建立"菜单中的"调试"命
令或工具条中的"调试"标志来激活调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>程序。要想知道关于调试
debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>应用的更多信息，请参见<link linkend="Projects">项目篇</link> 及
<ulink url="programming/index-12.html">KDevelop编程手册</ulink>
。</para>
</sect4>
</sect3>
</sect2>
</sect1>

<sect1 id="index-26">
<title>其他信息</title>

<para>本章的话题将更详细的在KDevelop IDE提供的文档和其他文档中叙述以下内容：</para>

<para><itemizedlist>
<listitem>
<para><ulink url="programming/index.html">KDevelop编程手册 </ulink>,完整的介绍了使用Qt和KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>库进行GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>的应用设计和
编程,</para>
</listitem>
<listitem>
<para>这本手册,从<link linkend="Overview">概要</link>一节到<link linkend="Projects">项目</link>一节, 描述了KDevelop的所有可用函数, </para>
</listitem>
<listitem>
<para>这本手册,在
<link linkend="The-Dialog-Editor">对话框编辑器</link>一节, 叙述了对话
编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>对于创建你自己的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>所起的作用, </para>
</listitem>
<listitem>
<para>在线
<emphasis>Online</emphasis>-参考文档到Qt库Qt-library <indexterm remap="idx"><primary>Qt-library</primary></indexterm>, 包括了
使用Qt的GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>-toolkit工具箱及类参考和快照创建其包含的最重要的可使
用的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的实例，</para>
</listitem>
<listitem>
<para><emphasis>KDE-Library Class-Reference <indexterm remap="idx"><primary>Reference</primary></indexterm></emphasis>, 由KDevelop
从KDE-库资源自动生成,包含了所有类classes <indexterm remap="idx"><primary>classes</primary></indexterm>和widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的描述及其使用的代码
实例，</para>
</listitem>
<listitem>
<para>在Internet上，参见：
<itemizedlist>
<listitem>
<para><ulink url="http://www.troll.no">\|\|</ulink>以得到关于Qt和其他第三方widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的
信息,</para>
</listitem>
<listitem>
<para><ulink url="http://www.kde.org">\|\|</ulink>以得到关于KDE项目和开发者指导,</para>
</listitem>
<listitem>
<para><ulink url="http://developer.kde.org">\|\|</ulink>以得到其他KDE应用开发的的参考.</para>
</listitem>
<listitem>
<para>KDevelop的主页<ulink url="http://www.kdevelop.org">\|\|</ulink></para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect1>
</chapter>

<chapter id="overview">
<title>概要</title>

<para>看看KDevelop,其用户界面可由其逻辑部件来描述: 主视窗,树浏览及输出output <indexterm remap="idx"><primary>output</primary></indexterm>窗
口,由菜单条，工具条和状态条所包围。本节将描述界面中每个部件的目标,先从窗口讲起，
再说控制条及其提供的函数。</para>

<sect1 id="index-28">
<title>主视窗</title>

<para>主视窗由四个状态条组成，左边两个用做编辑。先说说头部Header中为头部和其他任何文
本文件，例如文档SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>, 所设的资源窗口，然后是为源代码所设的C/C++窗口。它
们之后是表示成HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>格式的文档窗口。最后是为内部编程，例如以内置于IDE
的KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm>和KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>而设的Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>工具窗口，已注册的任何工具都可以通
过Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>菜单来使用；而第三方程序的注册可以通过configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>
设置对话框 (参见<link linkend="General-Configuration">一般设置</link>)来轻
易完成。要想得到关于编辑器窗口性能的描述,请参见"使用编辑器"篇<link linkend="Working-with-the-Editor">使用编辑器</link>
,对于Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>,则需参见"使用
文档浏览器"一节<link linkend="Using-the-Documentation-Browser"> 使用文档浏览器</link>.</para>
</sect1>

<sect1 id="index-29">
<title>类浏览器和文件浏览器</title>

<sect2 id="class-viewer-class-viewer">
<title>类浏览器Class Viewer <indexterm remap="idx"><primary>Class Viewer</primary></indexterm></title>

<para>类浏览器Class Viewer <indexterm remap="idx"><primary>Class Viewer</primary></indexterm> (CV <indexterm remap="idx"><primary>CV</primary></indexterm>)展示你的项目的各个类classes <indexterm remap="idx"><primary>classes</primary></indexterm>及全局函数
和变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>s。打开它的树会给你展示所有的函数成员member functions <indexterm remap="idx"><primary>member functions</primary></indexterm>
和带attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>属性标志的成员(私有的,有保护的和公有的,signals and slots),因
此你可以看见可视化的成员属性，而无须切换到头文件。 选择一个类名会打开相关的包含
该类的头文件并将光标设置到类的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>的起始处。选择成员函数
member functions <indexterm remap="idx"><primary>member functions</primary></indexterm>会打开implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>文件并将光标设置到函数头部。对于
元素, KDevelop会找寻头文件并将光标设置于元素声明所在行。类浏览器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>
还提供弹出菜单，包括更多专业的选项，请参见<link linkend="The-Class-Browser"> 类浏览器</link>查询更多详细信息。</para>
</sect2>

<sect2 id="index-30">
<title>逻辑文件浏览器</title>

<para>逻辑文件浏览器(LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>)允许通过各组中的过滤器将文件分类。独立的小组可以"项目
"菜单中的属性项或在树的条目上右击来加入。这会允许对你想快速得到的文件提供更专业
化的搜寻，只首先显示包含项目的文件。文件会在选中后根据它们的Mime-类型打开。你会
喜欢LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>的，例如用它完成选择pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>一类的事--这会在Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-工具窗
口中启动KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm>(如果已在系统上安装)并打开所选图片。</para>
</sect2>

<sect2 id="index-31">
<title>实际文件浏览器</title>

<para>实际文件浏览器(RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>)将所有文件表示于项目目录树,因此你可以编辑非-
project files <indexterm remap="idx"><primary>project files</primary></indexterm>项目文件或被LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>隐藏的文件，例如configure.in和
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s。弹出示菜单也提供例如增加或去除当前项目的文件的功能。</para>
</sect2>

<sect2 id="index-32">
<title>文档树</title>

<para>文档树(DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>)展示所有可用的基于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>的被设置为书的文档。选择其中一本书
会在浏览器窗口中打开其第一页。而且,弹出菜单会提供另外的基于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>的文档包的
个人设置。</para>
</sect2>
</sect1>

<sect1 id="index-33">
<title>输出窗口</title>

<para>输出窗口也被分割为一个信息窗，一个标准输入/输出窗口和一个标准错误指示窗口，属性
如下：
<itemizedlist>
<listitem>
<para> 信息窗口:展示所有编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>的输出output <indexterm remap="idx"><primary>output</primary></indexterm>。点击错误信息会改
变编辑widget，将光标设置到编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>发现错误的行。</para>
</listitem>
<listitem>
<para> 标准输出窗口: 展示将信息发至计算机标准输出output <indexterm remap="idx"><primary>output</primary></indexterm>的基于终端的应用。 注
意，终端应用现在将在一个外部控制台的窗口中启动。</para>
</listitem>
<listitem>
<para> 标准出错窗口: 展示你的程序产生的所有错误信息。这对于测试来说很有用。输出
窗口在编程时被设计为每次外部程序被访问时都会出现，例如make或一个终端应用。</para>
</listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="index-34">
<title>菜单条命令</title>

<sect2 id="index-35">
<title>文件管理和打印</title>

<para>本节将描述Kdevelop为文件提供的功能，可通过菜单条中的文件菜单或工具条中的相关按
钮进入：
<indexterm><primary>"File"-menu</primary></indexterm>文件菜单
<itemizedlist>
<listitem>
<para><emphasis remap="bf">新建			Ctrl+N</emphasis> 打开新文件 "New File <indexterm remap="idx"><primary>New File</primary></indexterm>" 对话, 允许创建新文
件。 文件可用不同的templates创建，文件名及创建文件的路径也须给出。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">打开			Ctrl+O</emphasis> 显示打开文件对话，让你选择一个要打开的文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">关闭		Ctrl+W</emphasis>关闭在顶部编辑窗口中的文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">保存			Ctrl+S</emphasis>	保存顶部窗口中打开的文件。如果文件还未保存, "另
存为"对话会打开，让你选择文件将被保存的的路径和文件名。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">另存为...</emphasis> 打开"另存为"对话，让你以新文件名保存当前文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">全部保存</emphasis> 保存所有改动过的文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">打印...	Ctrl+P</emphasis> 打开"打印"对话，你可在此使用a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>，enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>
或lpr设置打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>选项。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">退出			Ctrl+Q</emphasis> 退出 Kdevelop。 如果有文件被改动，你会被询问是
否愿意保存这些文件。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-36">
<title>编辑文件</title>

<para><indexterm><primary>"Edit"-menu"</primary></indexterm>"编辑"菜单
在此会描述提供文件编辑的"编辑"菜单和工具条中的相关按钮。编辑功能也可通过编辑器
editor <indexterm remap="idx"><primary>editor</primary></indexterm>中的文本菜单进入。
<itemizedlist>
<listitem>
<para><emphasis remap="bf">撤消			Ctrl+Z</emphasis> 取消上次编辑操作。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">重做	Ctrl+Y</emphasis> 让你重做上一次取消的操作。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">剪切			Ctrl+X</emphasis> 剪切所选内容并将它拷贝到系统剪切板。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">拷贝			Ctrl+C</emphasis> 拷贝所选内容到系统剪切板。这对文档浏览器中选择
的内容同样有用。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">粘贴		Ctrl+V</emphasis> 将系统剪切板中内容插入光标当前位置。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">缩进		Ctrl+I</emphasis> 将选取内容右移。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">取消缩进	Ctrl+U</emphasis> 将选取内容左移。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">插入文件...Ctrl+Insert</emphasis> 让你选择一个文件并将其内容插入光标当前位置。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">搜寻...		Ctrl+F</emphasis>打开搜寻对话，寻找当前文档中的某个语句。如果要在
若干文件中找寻,应使用"在文件中找寻。。。"。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">重复搜寻	F3</emphasis> 重复上次对某语句的搜寻。 这对同一页中找到多处匹配结果的
文档中的搜寻也有用。 选择"重复搜寻"或按下F3，下一个搜寻结果会被标注显示。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">替换...		Ctrl+R</emphasis> 打开"寻找并替换"对话，允许搜寻某语句并用新的语
句替换找到的文本。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">在多个文件中搜寻...		Ctrl+Alt+F</emphasis>显示"在多个文件中搜寻"对话, 在整
个目录上用wildcards 处理<literal remap="tt">grep <indexterm remap="idx"><primary>grep</primary></indexterm></literal> 。搜寻结果会将文件名，行和语句列表显示。
选择一项将打开该文件并将光标设置到搜寻结果search result <indexterm remap="idx"><primary>search result</primary></indexterm>所在行。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">全选  Ctrl+A</emphasis> 选择当前在顶部编辑窗口中打开的文件的全部文本。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">取消全选 </emphasis> 取消选择当前文件的全部文本。这在有多行选择时常常用到，这样
你就无须逐行取消选择了。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">翻转选区</emphasis> 翻转选择的内容,这意味着选中文本变为未选中，而未选中文本变为
选中。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-37">
<title>视图设置</title>

<para><indexterm><primary>"View"-menu"</primary></indexterm>"视图"菜单
视图菜单包括窗口的开关功能及显示/隐藏工具和状态条、在代码中跳过错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>
的命令 。
<itemizedlist>
<listitem>
<para><emphasis remap="bf">跳到...行	Ctrl+G</emphasis>打开"跳到。。。行"对话，让你插入在现行文件中想要显示的
行号。 最后一次输入的行号会被记下并标注, 因此你可以再次跳到该行，或输入你想浏览
的新行号。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">下一个错误		F4</emphasis>跳到Kdevelop从output <indexterm remap="idx"><primary>output</primary></indexterm>检测到的下一个错误。Make
或其他工具的输出 output <indexterm remap="idx"><primary>output</primary></indexterm> 信息会为你作出描述，帮你找到问题所在,这样你就可以
更正错误了。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">前一个错误 	Shift+F4</emphasis> 跳至前一个错误。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">对话框编辑器   Ctrl+D</emphasis> 切换至对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">树的浏览	Ctrl+T</emphasis> 在主视窗的左边显示/隐藏树窗口，包括类浏览器,
LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>,RFV <indexterm remap="idx"><primary>RFV</primary></indexterm> 和DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>-tree.</para>
</listitem>
<listitem>
<para><emphasis remap="bf">输出视图	Ctrl+B</emphasis> 在主视窗底部显示/隐藏输出窗口。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm></emphasis> 显示/隐藏工具条。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">浏览器工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm></emphasis> 显示/隐藏浏览器工具条, 包括浏览器的返回，前
进，搜寻按钮。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">刷新</emphasis> 重新扫描所有文件以重建类浏览器。扫描过程将在状态条的进程显示中可
见。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-38">
<title>创建和支持项目</title>

<para><indexterm><primary>"Project"-menu</primary></indexterm>
本节将描述"项目"菜单中可用的功能，及项目的创建和支持。
<itemizedlist>
<listitem>
<para><emphasis remap="bf">新建...</emphasis> 启动Kdevelop应用向导KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm> ，允许你通过选择应用类
型，名称，版本和其他选项，创建一个新的项目。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">打开</emphasis> 显示打开项目对话, 你可在此选择要打开的 KDevelop 项目文件。 选择
后项目将被装载。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">打开近期项目...</emphasis> 包括一个含有最近5个被打开文件的子菜单。使用"近期项目
"菜单你可以更容易的打开一个项目。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">关闭</emphasis>关闭当前项目。通常在你退出Kdevelop，激活应用向导KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>
或打开另一个项目时这都是自动完成的。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">新类New Class <indexterm remap="idx"><primary>New Class</primary></indexterm>...</emphasis>启动类生成器，创建将被加入当前项目的新的类。类
生成器让你指定类名, 继承，及新类的文件名。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">加入已有文件</emphasis> 打开选择对话，你可在此选择你想要加入当前项目的文件及它们
将被拷贝的路径。如果你选择了项目中当前未包含的目标地址,例如，创建一个新的子目录，
Kdevelop 会拷贝文件，将其加入新的子目录，并上成一个新的Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>。在拷贝
程序以后,你的项目会由 automake <indexterm remap="idx"><primary>automake</primary></indexterm> 和 autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm> 重建以把新的子目录包含到
make程序。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">加入新的翻译文件</emphasis> 打开一个语言选择对话，让你选择将加入项目的翻译文件的
语种。通常由翻译人员使用，这样他们可以轻易的将他们的语言加入项目，翻译时也无须顾
虑 Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>'s了。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">文件属性 Shift+F7</emphasis> 打开文件属性对话，显示 LFV <indexterm remap="idx"><primary>LFV</primary></indexterm> 的拷贝及项目文件选
项。你的文件属性必须在此设定，例如安装路径和文件类型。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">消息和合并</emphasis> 旨在为你的项目创建消息文件。消息文件包含了为项目的国际化建
立在资源文件中的所有字符串。它将由翻译人员用于为其目标语言创建 .po 文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">生成 API <indexterm remap="idx"><primary>API</primary></indexterm>-Doc</emphasis> 访问你头文件上的 KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm> 并用你的项目的类
classes <indexterm remap="idx"><primary>classes</primary></indexterm>的文档生成一个 HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 输出output <indexterm remap="idx"><primary>output</primary></indexterm>。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">生成用户手册</emphasis> 在你的手册的SGML <indexterm remap="idx"><primary>SGML</primary></indexterm> file文件上运行 KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm> ,
生成一个 HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 拥护手册。如果 KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm>  尚未安装,将使用sgml2html 来
完成。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">生成发布版:</emphasis></para>
<para><itemizedlist>
<listitem>
<para><emphasis remap="bf">tar.gz </emphasis> 在项目目录中生成你当前项目的发布文件，它包含了你的项目的各类
资源，将发布到终端用户手中。终端用户必须 <literal remap="tt">tar zxvf yourproject.tar.gz </literal> 来将
它解压到一个资源目录，并使用标准命令<literal remap="tt">./configure, make </literal>and <literal remap="tt">make
install</literal>.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">选项  F7</emphasis> 打开项目选项对话，让你改变你的项目的各种设置。这可能是一个新
的版本号或是编译器选项 compiler options <indexterm remap="idx"><primary>compiler options</primary></indexterm> ，选择化的发布设置为 -02。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-39">
<title>建设项目</title>

<para><indexterm><primary>"Build"-menu</primary></indexterm> "建设"菜单
本节描述项目菜单，它包括了利用 make  要完成的所有操作，或例如，重建项目在线帮助
或 API <indexterm remap="idx"><primary>API</primary></indexterm> documentation的操作。</para>

<para><itemizedlist>
<listitem>
<para><emphasis remap="bf">编译文件... Ctrl+F8</emphasis>已可用, 如果顶部编辑窗口是 C++ 窗口。它只编译当前
的 implementation <indexterm remap="idx"><primary>implementation</primary></indexterm> 文件，万一你怀疑有errors <indexterm remap="idx"><primary>errors</primary></indexterm>，可让你节省时间。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">生成  F8</emphasis> 激活你的项目的 make-command <indexterm remap="idx"><primary>make-command</primary></indexterm> 并建立目标。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">全部重建</emphasis> 重建你的项目的所有对象文件及目标文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">全部清除，重建</emphasis> 从所有由make创建的文件中清除项目目录并重建目标。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">停止建立  F10</emphasis> 终止当前程序。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">执行 F9</emphasis> 在用make建好程序后执行你的目标文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf"> 以Arguments执行Alt+F9</emphasis> 用arguments执行你的目标。首先，一个对话出现，
让你指定执行arguments (可为下次操作保留于项目中), 然后你的应用使用键入的命令行。
注意，你的应用程序是从项目目录中直接启动。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">调试...</emphasis> 在工具窗口Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-Window 中打开KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm> 以调试你的应用。
这样，KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm> 自动打开包含 main() 函数的文件并执行你的应用。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">Distclean</emphasis> 去除由项目创建的所有文件，例如对象文件等。 Distclean必须在
发布你的项目以前完成, 这样发布文件就不会包含任何平台特有的文件，比如由你的编译器
Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>生成的那些文件。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">Autoconf and automake <indexterm remap="idx"><primary>automake</primary></indexterm></emphasis> 在文件Makefile.dist <indexterm remap="idx"><primary>Makefile.dist</primary></indexterm>上访问Make, 定
位于你的主项目目录中。 Makefile.dist <indexterm remap="idx"><primary>Makefile.dist</primary></indexterm> 包含了创建你的项目的automake <indexterm remap="idx"><primary>automake</primary></indexterm>,
autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>等的所有命令。 如果你手动增加文件或自己更改宏 , 你应该在其后运
行Autoconf , 接着进行设置以重建所有的Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s.</para>
</listitem>
<listitem>
<para><emphasis remap="bf">Configure</emphasis> 执行            由autoconf <indexterm remap="idx"><primary>autoconf</primary></indexterm>生成的设置脚本。如果此命令
无法执行，请运行Autoconf 再重新设置。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="tools-tools">
<title>访问工具 Tools <indexterm remap="idx"><primary>Tools</primary></indexterm></title>

<para><indexterm><primary>"Tools"-menu</primary></indexterm>
工具菜单Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-menu 缺省的包括了以下程序（如已安装）的入口：KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm>,
KIconEdit <indexterm remap="idx"><primary>KIconEdit</primary></indexterm> 和KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>。这些是由KDevelop 安装程序来检测并以给定顺
序插入菜单。 激活一个工具会打开工具窗口"Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>"-window 并在此窗口内启动选中
程序。 工具Tools <indexterm remap="idx"><primary>Tools</primary></indexterm> 菜单可在选项菜单里由Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-entry 编辑；参见 <link linkend="Configuring-the-idxTools-Menu"> 配置工具菜单</link>.</para>
</sect2>

<sect2 id="kdevelop-0">
<title>改变Kdevelop设置</title>

<para>选项菜单<indexterm><primary>"Options"-menu</primary></indexterm>
选项菜单包括激活设置对话configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>s所有条目，可用于更改 Kdevelop
的缺省设置。
关于editor <indexterm remap="idx"><primary>editor</primary></indexterm> 或 printing <indexterm remap="idx"><primary>printing</primary></indexterm>的主要设置有它们自己的条目； Kdevelop操作的总
体设置可用<link linkend="KDevelop-Setup">KDevelop Setup</link> 对话完成。
<itemizedlist>
<listitem>
<para>编辑器<emphasis remap="bf">Editor...</emphasis> 允许进行编辑器的行为设置，例如断字，选择等。</para>
</listitem>
<listitem>
<para>编辑器颜色<emphasis remap="bf">Editor Colors...</emphasis> 你可在此进行编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>的颜色设置，
例如背景色。</para>
</listitem>
<listitem>
<para>编辑器缺省<emphasis remap="bf">Editor Defaults...</emphasis> 此处可设置缺省显示，例如编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>
的字体和字体大小。</para>
</listitem>
<listitem>
<para>句法-高亮显示<emphasis remap="bf">Syntax-Highlighting </emphasis> 这个对话框可让你设置几种要高亮显示
程序语言的字体和颜色,包括HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>.</para>
</listitem>
<listitem>
<para>文档浏览器<emphasis remap="bf">Documentation Browser</emphasis> 在这个tab-对话中, 你可以为内部浏览器
Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>设置字体,大小和颜色.</para>
</listitem>
<listitem>
<para>设置打印机<emphasis remap="bf">Configure Printer...</emphasis> 包括打印机设置对话configuration
dialog <indexterm remap="idx"><primary>configuration
dialog</primary></indexterm>s的项目,根据使用的打印程序printing <indexterm remap="idx"><primary>printing</primary></indexterm> program, a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>或
enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>.</para>
<para><itemizedlist>
<listitem>
<para><emphasis remap="bf">a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm></emphasis> 用a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>进行打印机使用设置. 参见打印以获取更多信息.</para>
</listitem>
<listitem>
<para><emphasis remap="bf">enscript <indexterm remap="idx"><primary>enscript</primary></indexterm></emphasis> 用enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>对打印机进行使用设置. 参见打印以获取更
多信息.</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>工具<emphasis remap="bf">Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>...</emphasis> 打开工具Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>设置对话. 你可在此通过增加或去
除将在工具窗口Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>-window中启动的程序来设置工具"Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>"菜单.</para>
</listitem>
<listitem>
<para> Kdevelop设置 <emphasis remap="bf">KDevelop Setup</emphasis> 打开KDevelop 设置对话. 第一个tabulator
可进行一般设置, 接下来是按键设置及文档设置. 文档设置还包括一套新的库文档
HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-library documentation的生成及帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>的搜寻索引
search index <indexterm remap="idx"><primary>search index</primary></indexterm>的重建.</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-40">
<title>窗口菜单</title>

<para>窗口菜单<indexterm><primary>"Window"-menu</primary></indexterm>
窗口菜单包含一个当前所有打开的文件的列表. 这允许快速切换到另一个你正在进行操作的
文件.</para>
</sect2>

<sect2 id="index-41">
<title>管理书签</title>

<para>书签菜单<indexterm><primary>"Bookmarks"-menu</primary></indexterm>
书签菜单旨在加入和去除你想在当前编辑的文件中设置的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> .由于
Kdevelop使用了两个编辑窗口, 每一个都独自设置其书签 bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> .
<itemizedlist>
<listitem>
<para>设为书签<emphasis remap="bf">Set Bookmark</emphasis> 打开一个包含了9个可设置的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>的
文本菜单。允许在书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>菜单中通过逻辑关系给某条目设置书签项。</para>
</listitem>
<listitem>
<para>加入书签<emphasis remap="bf">Add Bookmark  Ctrl+Alt+A</emphasis> 将当前光标所在位置的行作为一个书签加
入书签菜单bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>。注意这可能覆写一个由"设为书签"选项设置的书签。如果浏
览器已打开, 书签会被加入浏览器窗口的书签菜单 bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> menu。</para>
</listitem>
<listitem>
<para>清除书签<emphasis remap="bf">Clear Bookmarks Ctrl+Alt+C</emphasis> 清除顶部编辑窗口或浏览器中的书签条
目,例如，如果头部窗口可见，你选择清除书签, 头部窗口中的条目将被删除。</para>
</listitem>
<listitem>
<para>头部窗口<emphasis remap="bf">Header-Window</emphasis> 包含头部窗口的书签列表。选择一个书签会将光标设
置于选中的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>'所在行。注意，书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> 只分配给他们被设
置连接的文件，因此如果你改变为另一个文件，书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>并未被删除，但是选
中书签也后不会切换至他们被分配的文件了。</para>
</listitem>
<listitem>
<para> C/C++-窗口<emphasis remap="bf">C/C++-Window</emphasis> 包括C/C++-Window的书签列表。界面和头部窗
口相同。</para>
</listitem>
<listitem>
<para>浏览器窗口<emphasis remap="bf">Browser Window</emphasis> 包括浏览器书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>。选择一个
书签会由选中的书签打开浏览器。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="online-help-online-help">
<title>在线帮助Online Help <indexterm remap="idx"><primary>Online Help</primary></indexterm></title>

<para>帮助菜单<indexterm><primary>Help-menu</primary></indexterm>
帮助菜单包括在帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>中用于导航的及最近使用过的库和在线文档
的项目。要进入另外的在线文档，可在树视图中使用 DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>-tree ，如果自动切换可用，
在切换至文档浏览器窗口时树视图将自动打开。
<itemizedlist>
<listitem>
<para>后退<emphasis remap="bf">Back <indexterm remap="idx"><primary>Back</primary></indexterm>  Alt+ Left Arrow</emphasis> 打开当前页的前一页。</para>
</listitem>
<listitem>
<para>前进<emphasis remap="bf">Forward <indexterm remap="idx"><primary>Forward</primary></indexterm> Alt+ Right Arrow</emphasis> 打开浏览器历史记录中的下一个页面，
在执行过后退操作后可用。</para>
</listitem>
<listitem>
<para>搜寻标注文本<emphasis remap="bf">Search Marked Text <indexterm remap="idx"><primary>Search Marked Text</primary></indexterm>		F2</emphasis> 扫描搜寻索引，找寻编辑
窗口或浏览器窗口中当前标注的文本。搜寻后显示一搜寻结果页面，让你选择要切换的帮助
页面。选择某页后，浏览器会以高亮显示找到的词条。如果一页上有多个匹配的词条，按下
F3键，会显示同一页上的下一个搜寻结果 search result <indexterm remap="idx"><primary>search result</primary></indexterm> 。</para>
</listitem>
<listitem>
<para>查找。。。帮助<emphasis remap="bf">Search for Help on... <indexterm remap="idx"><primary>Search for Help on...</primary></indexterm></emphasis>打开查找帮助...对话，让你查找
你希望得到帮助的特定语句。
</para>
</listitem>
<listitem>
<para>用户手册<emphasis remap="bf">User Manual <indexterm remap="idx"><primary>User Manual</primary></indexterm>		F1 <indexterm remap="idx"><primary>F1</primary></indexterm></emphasis> 打开用户手册KDevelop 索引页以
进入用户手册。
</para>
</listitem>
<listitem>
<para>编程手册<emphasis remap="bf">Programming Handbook <indexterm remap="idx"><primary>Programming Handbook</primary></indexterm> </emphasis> 打开编程手册<ulink url="programming/index.html">KDevelop编程手册</ulink>索引页 以进入
编程手册。
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">每日一贴Tip of the Day <indexterm remap="idx"><primary>Tip of the Day</primary></indexterm></emphasis> 打开每日一贴对话，告知你 Kdevelop的特色。
</para>
</listitem>
<listitem>
<para><emphasis remap="bf"> KDevelop 的主页KDevelop Homepage <indexterm remap="idx"><primary>KDevelop Homepage</primary></indexterm></emphasis> 如果Internet可用，将在浏览器
窗口中打开Kdevelop的主页。
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">Bug报告Bug Report <indexterm remap="idx"><primary>Bug Report</primary></indexterm>...</emphasis> 打开KDevelop Bug报告对话, 你可在此通过email
将一个bug报告直接发送给Kdevelop小组。参见 <link linkend="Bug-Reporting">Bug 报告</link>
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">C/C++ 参考Reference <indexterm remap="idx"><primary>Reference</primary></indexterm></emphasis> 显示语言参考索引页。如果参考尚未安装,将
显示一个错误页面告诉你如何得到并正确安装参考。
</para>
</listitem>
<listitem>
<para> Qt库<emphasis remap="bf">Qt-Library <indexterm remap="idx"><primary>Qt-Library</primary></indexterm></emphasis> 切换至你的Qt库的拷贝提供的Qt库文档的索引页。
</para>
</listitem>
<listitem>
<para> KDE-Core-库<emphasis remap="bf">KDE-Core-Library <indexterm remap="idx"><primary>KDE-Core-Library</primary></indexterm></emphasis> 打开KDE-Core-库文档的类索引文件。
<indexterm><primary>kdecore</primary></indexterm>
</para>
</listitem>
<listitem>
<para> KDE-GUI-库<emphasis remap="bf">KDE-GUI-Library <indexterm remap="idx"><primary>KDE-GUI-Library</primary></indexterm></emphasis> 对于GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>-library<indexterm><primary>kdeui</primary></indexterm>，
如上。
</para>
</listitem>
<listitem>
<para> KDE-KFile-库<emphasis remap="bf">KDE-KFile-Library <indexterm remap="idx"><primary>KDE-KFile-Library</primary></indexterm></emphasis> 对于KFile-library，如上。
</para>
</listitem>
<listitem>
<para> KDE-HTML-库<emphasis remap="bf">KDE-HTML-Library <indexterm remap="idx"><primary>KDE-HTML-Library</primary></indexterm></emphasis> 对于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-library，如上。
</para>
</listitem>
<listitem>
<para> API <emphasis remap="bf">Project-API-Doc <indexterm remap="idx"><primary>Project-API-Doc</primary></indexterm></emphasis> 切换至项目的类-文档索引文件。
<indexterm><primary>KDoc</primary></indexterm><indexterm><primary>API</primary></indexterm>
</para>
</listitem>
<listitem>
<para>用户手册<emphasis remap="bf">Project-User-Manual <indexterm remap="idx"><primary>Project-User-Manual</primary></indexterm></emphasis> 打开你当前项目的用户手册的索引文
件。这可用于查看由KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm>生成的HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-output <indexterm remap="idx"><primary>output</primary></indexterm> 。
</para>
</listitem>
<listitem>
<para>关于KDevelop <emphasis remap="bf">About KDevelop...</emphasis> 显示KDevelop 的相关信息窗，包含以前的
版本号，作者名和email地址及Kdevelop的执照参考。</para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>

<sect1 id="toolbar-toolbar-items">
<title>工具条条目Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm> Items</title>

<para>KDevelop 提供通过工具条快速进入各种命令的途径。这些都是标准的及浏览器的工具条；
在对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 模式下只有标准工具条可见。 二者都可以通过"视图"
菜单中的相关菜单项来显示/隐藏；也可被拖出主窗口，在工作区的任一侧放置。</para>

<sect2 id="toolbar-toolbar">
<title>标准工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm></title>

<para>标准工具条提供进入最近使用的处理和编辑文件及建设你的应用的功能的快速途径。 按钮
将从左到右执行以下命令：
<indexterm><primary>"File"-menu</primary></indexterm><indexterm><primary>"Edit"-menu</primary></indexterm><indexterm><primary>"Project"-menu"</primary></indexterm><indexterm><primary>"Build"-
menu</primary></indexterm><indexterm><primary>debugging</primary></indexterm><indexterm><primary>Tree-View</primary></indexterm><indexterm><primary>Output-View</primary></indexterm><indexterm><primary>execute target</primary></indexterm></para>

<para><itemizedlist>
<listitem>
<para>打开项目 - 显示打开项目对话。</para>
</listitem>
<listitem>
<para>打开文件 - 显示打开文件对话，随后会弹出窗口，让你快速选择当前项目头及源文
件。</para>
</listitem>
<listitem>
<para>保存文件 - 将当前打开的文件保存到磁盘。</para>
</listitem>
<listitem>
<para>打印文件 - 打开打印对话。</para>
</listitem>
<listitem>
<para>(分割线)</para>
</listitem>
<listitem>
<para>取消 - 取消上次操作。</para>
</listitem>
<listitem>
<para>重做 - 重新执行上次取消的操作。</para>
</listitem>
<listitem>
<para>剪切 - 剪切当前所选内容。</para>
</listitem>
<listitem>
<para>拷贝 - 拷贝当前所选内容到系统剪切板。</para>
</listitem>
<listitem>
<para>粘贴 - 将当前系统剪切板中内容插入光标当前位置。</para>
</listitem>
<listitem>
<para>(分割线)</para>
</listitem>
<listitem>
<para>文件编译Compile File <indexterm remap="idx"><primary>Compile File</primary></indexterm> - 在源文件窗口可视化编译当前文件。在对话编辑模
式由生成文件按钮代替。</para>
</listitem>
<listitem>
<para>生成 - 在项目上激活make。</para>
</listitem>
<listitem>
<para>全部重建 - 重建项目</para>
</listitem>
<listitem>
<para>调试 - 为在工具窗口Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>- window用二进制应用调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>打开
KDbg <indexterm remap="idx"><primary>KDbg</primary></indexterm> 。</para>
</listitem>
<listitem>
<para>执行 - 运行应用的目标二进制</para>
</listitem>
<listitem>
<para>停止 - 取消当前程序</para>
</listitem>
<listitem>
<para>(分割线)</para>
</listitem>
<listitem>
<para>对话框编辑器 - 切换至对话框编辑器模式。这里，按钮将由源代码编辑器 editor <indexterm remap="idx"><primary>editor</primary></indexterm> 按
钮代替。</para>
</listitem>
<listitem>
<para>树视图 - en-/disables the treeview and works as a toggle button to display the
current state</para>
</listitem>
<listitem>
<para>输出视图 - en-/disables the output <indexterm remap="idx"><primary>output</primary></indexterm> view and works as a toggle button to
display the current state</para>
</listitem>
<listitem>
<para>(separator)</para>
</listitem>
<listitem>
<para>这是什么..? 帮助按钮 - 将光标变为问号，让你获取关于KDevelop GUI <indexterm remap="idx"><primary>GUI</primary></indexterm> 部
件的信息。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="toolbar-toolbar-0">
<title>浏览器工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm></title>

<para>浏览器browser <indexterm remap="idx"><primary>browser</primary></indexterm> 工具条是另一类为浏览文件和文档documentation <indexterm remap="idx"><primary>documentation</primary></indexterm>提供了很多
有用命令的工具条。这一工具条包括:
<indexterm><primary>documentation browser</primary></indexterm><indexterm><primary>Help-menu"</primary></indexterm>
<itemizedlist>
<listitem>
<para>类combo box - 让你选择要浏览的当前项目中的某类</para>
</listitem>
<listitem>
<para>方法combo box - 让你选择当前类的一个方法，浏览该方法的实现
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm> 。</para>
</listitem>
<listitem>
<para>类帮助按钮 - 单击鼠标，将你带至当前选中的方法的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm> 处。
包含一个弹出菜单以使用类工具增加类，方法，属性及浏览命令。</para>
</listitem>
<listitem>
<para>后退 - 在文档浏览器历史documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm> history中向后浏览； 包
含一个弹出菜单以选择后退历史中的某一页。</para>
</listitem>
<listitem>
<para>前进 - 在文档浏览器历史documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm> history中向前浏览； 包
含一个弹出菜单以选择前进历史中的某一页。</para>
</listitem>
<listitem>
<para>停止 - 停止浏览器装载一个文档文件的请求</para>
</listitem>
<listitem>
<para>刷新 - 重载当前显示的页面</para>
</listitem>
<listitem>
<para>返回 - 在浏览器中打开KDevelop 用户手册索引页面</para>
</listitem>
<listitem>
<para>找寻标注文本 - 找寻选中文本的文档索引； 使用浏览器和编辑窗口editor <indexterm remap="idx"><primary>editor</primary></indexterm>
windows。</para>
</listitem>
<listitem>
<para>找寻关于...的帮助 - 打开找寻关于...的帮助对话，让你键入一个要在文档中找寻
的关键字。</para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>

<sect1 id="index-42">
<title>键盘快捷键</title>

<para>本节处理KDevelop IDE中使用的可设置的键盘命令预先定义的值及标准的取值。
要得到一个关于如何改变命令的指定值的详细的解释，请参见 <link linkend="Changing-Keyboard-Shortcuts">改变键盘快捷键</link> 一节。</para>

<sect2 id="index-43">
<title>文本处理的快捷键</title>

<para><indexterm><primary>Keyboard Shortcuts</primary></indexterm><indexterm><primary>Shortcuts</primary></indexterm></para>

<sect3 id="index-44">
<title>光标移动</title>

<para><programlisting>左移一个字母                                     左箭头
右移一个字母                                     右箭头
左移一个字                                       CTRL+左箭头
右移一个字                                       CTRL+右箭头
上移一行                                         向上箭头
下移一行                                         向下箭头
到行首                                           POS 1
到行末                                           END
向上一页                                         PageUp
向下一页                                         PageDown
到当前文件开头                                   CTRL+PageUp
到当前文件尾部                                   CTRL+PageDown</programlisting>
</para>
</sect3>

<sect3 id="index-45">
<title>文本选择</title>

<para><programlisting>左移一个字母                                     SHIFT+左箭头
右移一个字母                                     SHIFT+右箭头
左移一个字                                       CTRL+SHIFT+左箭头
右移一个字                                       CTRL+SHIFT+右箭头
上移一行                                         CTRL+向上箭头
下移一行                                         CTRL+向下箭头
到行首                                           CTRL+POS 1
到行末                                           CTRL+END
向上一页                                         SHIFT+PageUp
向下一页                                         SHIFT+PageDown
到当前文件开头                                   CTRL+SHIFT+PageUp
到当前文件尾部                                   CTRL+SHIFT+PageDown</programlisting>
</para>
</sect3>

<sect3 id="index-46">
<title>插入和拷贝文本, 制表</title>

<para><programlisting>打开/关闭插入模式                                INS
将选中文本拷贝到剪贴板                           CTRL+C, CTRL+INS
从剪贴板插入文本                                 CTRL+V, SHIFT+INS
删除当前行                                       CTRL+K
在当前行后插入一行                               END, 再回车
在当前行后插入一行                               POS 1, 再回车
取消一编辑步骤                                   CTRL+Z
重做取消的步骤                                   CTRL+Y
制表                                             TAB</programlisting>
</para>
</sect3>

<sect3 id="index-47">
<title>删除文本</title>

<para><programlisting>删除光标左边的字母                                  退格键
删除光标右边的字母                                  Delete
删除选中文本                             选中文本, 再回车或 Delete
</programlisting>
</para>
</sect3>

<sect3 id="editor-editor">
<title>用编辑器 Editor <indexterm remap="idx"><primary>Editor</primary></indexterm>查找文本</title>

<para><programlisting>打开到行...对话                                       CTRL+G
打开寻找文本对话                                      CTRL+F
重复上一次查找                                        F3
打开查找/替代对话                                     CTRL+R

在文件对话中打开查找(文本查找工具)                            CTRL+ALT+F
用Grep查找标注文本                                   SHIFT+F2

定位下一个错误                                        F4
定位上一个错误                                        SHIFT+F4
</programlisting>
</para>
</sect3>

<sect3 id="index-48">
<title>用文档浏览器搜寻文本</title>

<para><programlisting>在文档中搜寻选中的编辑器文本                       F2
在文档中搜寻选中的浏览器文本                       F2
显示同一页中的下一个搜寻结果                       F3

在项目中搜寻选中的浏览器文本            			 SHIFT+F2</programlisting>
</para>
</sect3>

<sect3 id="index-49">
<title>浏览器快捷键</title>

<para><programlisting>前一页                                              ALT+ 左箭头
后一页                                              ALT+ 右箭头</programlisting>
</para>
</sect3>

<sect3 id="index-50">
<title>管理书签</title>

<para><programlisting>加入书签                                             CTRL+ALT+A
清除书签列表                                         CTRL+ALT+C</programlisting>
</para>
</sect3>
</sect2>

<sect2 id="toolbar-toolbar-symbols">
<title>工具条符号的快捷键 Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm> Symbols</title>

<para><programlisting>"打开文件"符号                                    CTRL+O
"保存文件符号"                                    CTRL+S
"打印文件"符号                                    CTRL+P
"取消操作符号"                                    CTRL+Z
"重做"符号                                        CTRL+Y
"剪切"符号                                        CTRL+X
"拷贝"符号                                        CTRL+C
"粘贴"符号                                        CTRL+V
"编译文件"符号                                    CTRL+F8
"生成符号"                                        F8
"执行"符号                                        F9
"用Arguments执行"符号                            ALT+F9
"对话框编辑器"符号                                  CTRL+D
"后退"符号                                 ALT+左箭头, 如果浏览器已打开
"前进" 符号                               ALT+右箭头, 如果浏览器已打开
"搜寻标注文本"符号                                F2</programlisting>
</para>
</sect2>

<sect2 id="index-51">
<title>窗口管理</title>

<para>要切换到某一窗口, 请在窗口标题上按下 ALT 加带下画线的字母, 例如 Tools <indexterm remap="idx"><primary>Tools</primary></indexterm> 就是
Alt+T</para>
</sect2>

<sect2 id="index-52">
<title>编译过程的快捷键</title>

<para><programlisting>编译当前源文件                                   CTRL+F8
建立当前项目目标                                 F8
在建立程序后执行目标                             CTRL+F9
用Arguments执行目标                             ALT+F9
中止当前程序                                     F10</programlisting>
</para>
</sect2>
</sect1>
</chapter>

<chapter id="the-help-system">
<title>帮助系统</title>

<para>大多数Kdevelop的精力都花在了帮助系统上。这应作为一个如何使用一套完整的帮助功能
来扩展你自己的KDE 应用的例子来理解，而且已经在template应用中部分实现, 因此由应
用向导生成的KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>KDE/Qt application framework <indexterm remap="idx"><primary>application framework</primary></indexterm>s 已经包含了为状态
条帮助和文档提供的基本功能，那只需由程序员扩展即可。因此本节将介绍IDE提供的一般
帮助的使用及帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>的使用, 巧妙的使用它将使你得到开发所需的
信息变的十分容易。</para>

<sect1 id="quickhelp-quickhelp">
<title>"这是什么 ?"-按钮及快速帮助Quickhelp <indexterm remap="idx"><primary>Quickhelp</primary></indexterm></title>

<para>看看Kdevelop的顶部工具条, 你会在最右边看见 "这是什么?" 按钮。选择这 一按钮, 光
标会变为一个指针，右边带一个问号, 和工具条中的那个按钮一样。现在，你可以选择
Kdevelop用户界面中的任何一个可视化部件。单击它会显示一个帮助窗口，为你简要描述
该部件可为你提供的功能或它可以为你完成的任务，为主视，树视图，及工具条上的每一个
按钮提供解说帮助。再次用鼠标单击或输入键盘上某键，这是什么帮助窗口将消失，你的鼠
标会设置到上一次的位置。注意，如果你将鼠标指针放于某键上，该键会突起，接着出现一
个快书-Tip-窗口, 为你描述该按钮在菜单条中代表的功能；将鼠标指针移开窗口就会消失。</para>

<para>对于用户交互对话, 快速帮助Quickhelp <indexterm remap="idx"><primary>Quickhelp</primary></indexterm> 为你提供帮助窗口，简要描述你需要得到帮
助的选中条目。这可通过在项目上右击鼠标来进入, 一个内容目录会弹出,允许选择"快速帮
助"。选中它会弹出帮助窗口。这在你还对Kdevelop不熟悉，不知道某操作对话的目的时很
有用。注意，大多数对话提供一个帮助按钮，在帮助浏览器的在线手册中为你提供对话选项
的详细文本帮助。</para>
</sect1>

<sect1 id="statusbar-statusbar">
<title>状态条Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm> 帮助</title>

<para>Kdevelop的状态条帮助提供给你很多的功能，告知你当前操作状态的相关信息并显示为你
提供命令简要描述的"状态信息"。</para>

<sect2 id="statusbar-statusbar-entries">
<title>状态条项目 Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm> Entries</title>

<para>状态条Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm> 包括:
<orderedlist><listitem>
<para> 一个一半信息域, 多数居左。常用于帮助信息及显示当前操作。</para>
</listitem>
<listitem>
<para> 进展条, 指示需要相当长一段时间才能完成的操作的进展, 例如保存文件及类浏览
器的扫描过程。进展条只有在那样的程序执行时才会出现。</para>
</listitem>
<listitem>
<para> 一个插入/改写指示器。它将显示编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm> 模式，对于插入操作将由INS
表示插入模式，改写模式则使用OVR 。也可通过键盘上的INS-键转变模式。</para>
</listitem>
<listitem>
<para> 一个行计数器, 显示光标当前所在的行。</para>
</listitem>
<listitem>
<para> 一个列计数器, 指示光标当前在一行中所在的列位置。</para>
</listitem>
</orderedlist>
</para>
</sect2>

<sect2 id="index-54">
<title>帮助信息</title>

<para>当你选择了菜单条中某菜单的一个操作但并未执行，状态条告诉你关于该菜单条目的操作。
此外，如果你按下了工具条按钮, 但还未松开鼠标键, 该按钮的帮助信息会以和菜单条目相
同的方式显示。你可以一直按住鼠标，通过将鼠标指针移开该按钮来阻止所选按钮的执行。
一旦光标移开，鼠标按钮即可松开。</para>

<para>对于当前正执行的操作, Kdevelop会显示其执行过程。这对在后台运行的程序其作用，例
如保存文件及对话。如果程序已经存在，例如一个make-invocation, 状态条会将改变显示
回"Ready"状态。
而且, 在使用文档浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>时, 只要将光标置于浏览器窗口中
一个URL连接上，状态条会显示连接地址。因此, 你可以轻易的发现文件是本地的还是只有
通过网络连接才能访问的远程文件。</para>

<para>Kdevelop项目编辑器的字表明了当前在顶部窗口打开的文件的名称。这可能是文档浏览器
documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>的一个 HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 文件，或编辑窗口的一个文本文件。此
外还将显示项目名, 这样你可以一直控制你的位置及你当前的操作对象。</para>
</sect2>
</sect1>

<sect1 id="html-html">
<title>配置HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 浏览器</title>

<para>Kdevelop中包含的浏览器是完全基于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>的, 因此你可以指定一般选项，例如背景
等。你可以通过"选项菜单的"文档浏览器"项设置所有的参数。配置对话configuration
dialog <indexterm remap="idx"><primary>configuration
dialog</primary></indexterm> 未你显示两个定位装置；第一个是进行字体参数设置, 第二个是颜色选项设置。</para>

<sect2 id="index-55">
<title>字体参数</title>

<para>字体显示的第一个选项是字体大小。可选项由小号, 中号和大号。一般用途的最佳显示缺省
设置为小号。</para>

<para>对于字体选择，你必须为普通文本指定显示在HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>文档中的标准字体；固定的字体是
用于例如在HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>文件中显示代码的。</para>
</sect2>

<sect2 id="index-56">
<title>颜色参数</title>

<para>颜色参数对话允许设置背景, 标准文本, URL连接及连接后的颜色。右端的有色按钮显示的
是当前设置；选择一个按钮将打开"颜色选择"对话。在那里，你可以通过在多色窗口中选择
一个系统色, 一个自定义色,或通过直接设置颜色值来指定颜色。中部是对所选颜色的预览。
另外, 你可以指定浏览器是否应该将连接下划线以更醒目及你是否希望使用你自己选择的颜
色，而不管页面预先设置的颜色。"应用" 会执行所有的改动, "确定"则运用所有的改动并
关闭对话。"取消" 不会改变任何设置并退出配置。</para>
</sect2>
</sect1>

<sect1 id="using-the-documentation-browser">
<title>使用文件浏览器</title>

<para>文件浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm> 允许快捷的访问随Kdevelop提供的或自动生成
的所有的手册及文件, 包括KDE 库KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm> 及你的项目文件的在线文档。另
外, 树视图中的文件树允许你设置一个额外的包含了所有个人加入文件的"其他" 文件夹。</para>

<sect2 id="index-58">
<title>要求</title>

<para>要使用帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>的所有特色, 你应该线安装KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>及
glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm>。KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm> 将在setup <indexterm remap="idx"><primary>setup</primary></indexterm>过程中为KDE 库KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>生成
各种各样的在线类--文件, 但也可通过<link linkend="General-Configuration">KDevelop Setup</link>
中的选项激活。对于一个你的项目的类
classes <indexterm remap="idx"><primary>classes</primary></indexterm>的API <indexterm remap="idx"><primary>API</primary></indexterm> (Application Programming Interface)文件的生成, KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>
也会被项目菜单中"生成API <indexterm remap="idx"><primary>API</primary></indexterm>-Doc"使用和访问。这将处理项目所有的当前的头文件及
对Qt和KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>前后参照，如果它们在帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>中可用。
对于项目手册的生成, 你应该至少在你的系统上安装KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm> (由KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm>
提供)及, SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>-tools。要扩展及更改你的项目的在线文件, 你必须通过在RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>
中选择它来为你的项目编辑文档文件。在保存了你的改动后，从项目菜单中访问"建立用户
手册" 。假如 SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>tools 检测到格式化错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>, 错误将会显示在输出
output <indexterm remap="idx"><primary>output</primary></indexterm> 窗口，允许你直接找出错误行。"glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm>"程序用于自动为你的文件创
建一个个人的搜寻索引。索引通常在安装过程中建立, 但也可利用<link linkend="General-Configuration">KDevelop Setup</link>
对话建立。要得到所提供的搜寻功能的描述，请
参见<link linkend="Using-the-Searchindex">使用搜索索引</link>。</para>
</sect2>

<sect2 id="index-59">
<title>提供的文档</title>

<para>KDevelop IDE 有两套在线文档, 可以通过帮助菜单或在Kdevelop文件夹中通过树视图的文
档树来获得。所提供的第一本书就是这本包含了所有你需要的安装及设置，可用功能及应用
开发介绍信息的在线手册。第二本书的首版是<ulink url="programming/index.html">KDevelop编程手册</ulink>。编程手册包括与创建及扩展由KDevelop生
成的项目相关的大多数问题。通过此教程，用户得到关于由Qt- 和/或 KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>
创建的应用所提供的丰富功能的介绍，还为保证KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-compliance 提供了指导,在位于
<ulink url="http://developer.kde.org">\|\|</ulink>的Internet 网站上提供相同介绍。然而, 编程手
册不能代替任何其他可用的关于C++编程语言打印出的或是电子形式的文件，及关于Qt-库
的使用的文件。</para>

<para>KDevelop 使用的C/C++-参考Reference <indexterm remap="idx"><primary>Reference</primary></indexterm> 当前只有在位于<ulink url="http://www.kdevelop.org">\|\|</ulink>的Kdevelop主页上可用。在发布时该参考可能会包括进
去, 可参见所发布的安装程序索引以获得更多信息。它可通过下载和拷贝源文件到主要的
KDE-目录($KDEDIR)来轻易安装。然后，你必须使用<literal remap="tt">tar zxvf c&&lowbar;;c++&&lowbar;;reference.tar.gz</literal>
将它作为根部, 然后参考将被拷贝KDevelop的文件目录。要卸载参考文件，你只需在
($KDEDIR)/share/doc/HTML/default/kdevelop/reference下删除"参考"文件夹。</para>

<para>Qt/KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>文件夹允许直接访问你的Qt-库拷贝的HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-在线文件。库
文件的路径通常使由Kdevelop安装程序自动检测, 但也可在<link linkend="General-Configuration">KDevelop Setup</link>
对话中手动设置。而且，所有KDE库KDE-
libraries <indexterm remap="idx"><primary>KDE-
libraries</primary></indexterm>的可用文件都以库名顺序列出, 因此如果你要使用某个库的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>，
你可以很容易的决定要加入项目中连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>设置的库的类型。注意，整个KDE-
库文件只有当由KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>生成时才可进入---因此包含于KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm>中的这个程序, 必
须文件生成以前安装。由于Kdevelop的安装程序自动完成次步骤, 它应当在运行KDevelop 安
装程序前安装。如果不是这样且文件不能建立, 你可以利用<link linkend="General-Configuration">KDevelop Setup</link>
对话在其后任何时间创建它。
文件树还包含"其他" 文件夹，这些文件夹旨在包含所有个人设置的文档，如下。最后,  文
档树允许访问API <indexterm remap="idx"><primary>API</primary></indexterm> 及你当前项目的手册。</para>
</sect2>

<sect2 id="helpbrowser-helpbrowser">
<title>将文件加入帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm></title>

<para>要设置你的帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>, 先打开树视图并选择"DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>"定位装置。 你
会看见一个打开包含四哥文件夹的树。"其他" 文件夹缺省为空。用鼠标在这个文件夹上右
击, 一个上下文菜单会打开，它包含了一个"增加入口"项。选择它会打开增加入口对话，你
必须在此输入两个值: 上面一个是文档在文档树中显示的文件名，下面一个是文件入口行,
你必须在此输入其后通过选择该入口将被打开的起始页的路径和文件名。你可以直接输入路
径及文件名或通过选择右边的按钮来打开一个文件选择对话。这允许对你的系统进行快速浏
览以查找你的起始页的路径。注意，只有HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-文件可以选择, 所以只允许选择
HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 文件。选择OK 会将入口加入文档树并可直接使用。</para>
</sect2>

<sect2 id="using-the-searchindex">
<title>使用搜寻索引</title>

<para>KDevelop 包含了一套功能，帮助你利用HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>文件查找信息。要使用这些特色, 你的
系统需要安装"glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm>"程序, 一个免费的数据库生成器-它会生成搜寻索引
search index <indexterm remap="idx"><primary>search index</primary></indexterm> 并在文件内执行搜寻操作。要建立索引, 请参见<link linkend="General-Configuration">KDevelop Setup</link>
。索引也可在安装程序中自动生成。</para>

<para>如下，有几种方式可以进入查寻功能，你可以选择:
<orderedlist><listitem>
<para>在编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>中, 选择你想要获得帮助的文本活将光标置于你要查寻的单词
中。然后右击鼠标选择设置: "语句"。这也可通过从帮助菜单中选择"搜寻标注文本"、按下
快捷键F2 或通过从工具条选择搜寻按钮来完成。</para>
</listitem>
<listitem>
<para>在文件浏览器中选择你要找寻的文本并按下鼠标右键, 选择找寻:"语句" 或选择 "找
寻标注文本" 或如上使用找寻按钮。</para>
</listitem>
<listitem>
<para>如果你想要查找一个特定的关键字, 在帮助菜单中选择"查找对...的帮助" 或从工具
条中选择"查找对...的帮助" 按钮, 然后会打开一个查找对话，你可以在此输入你想要得到
信息的词句。</para>
</listitem>
</orderedlist>

可通过在"DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>" -树-浏览中选择相关按钮或通过帮助菜单的条目直接进入特定文件。</para>

<para>帮助浏览器Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm> 还提供对文本查找工具grep <indexterm remap="idx"><primary>grep</primary></indexterm> 在你当前的文档中查找
所选文本的支持, 例如，你已经为<literal remap="tt">KTMainWindow</literal> class (KDEUI library)打开文档页
并希望知道<literal remap="tt">KTMainWindow</literal>出现在你代码中的哪个位置。标注<literal remap="tt">KTMainWindow</literal>并选择
"文本查找工具: KT主视窗"或按下Shift+F2。"在文件中查找"对话会打开并直接显示你的
文本查找工具grep <indexterm remap="idx"><primary>grep</primary></indexterm> 的搜寻结果。然后你可以选择一个结果行并跳至相关资源代码。</para>
</sect2>
</sect1>
</chapter>

<chapter id="working-with-the-editor">
<title>使用编辑器</title>

<para>本集成开发环境的一个重要部件就是编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>。你可以利用它完成以下操作:
<itemizedlist>
<listitem>
<para>生成, 打开并保存资源及项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm></para>
</listitem>
<listitem>
<para>编辑资源及项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm></para>
</listitem>
<listitem>
<para>编写你的SGML <indexterm remap="idx"><primary>SGML</primary></indexterm> 文件</para>
</listitem>
<listitem>
<para>打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 你的项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm></para>
</listitem>
</itemizedlist>

通常,与其他编辑器相比，该编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>本身并没有多大的不同；尤其它是流行的
Kwrite的内置版本, 也被称作"扩展的编辑器"。 如果你对这个很熟悉, 你对使用它来管理
你的项目不会有很大问题。除了常规编辑器, Kdevelop还包含一个新的打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>
系统, 它有进一步的扩展以利于更好使用的资源代码。--你可以选择你想要使用的打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm>程序。</para>

<para>本节将进一步为你介绍关于如何处理你的项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm> 及让你更加熟悉编
辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>的功能。许多Unix-支持者更愿意使用Emacs 或 XEmacs- 他们对这个可
以运用自如。但是对于简易编程则没有必要使用它, 尤其是对初学者, 使用功能强大的编辑
器，最后往往只允许你输入你的代码。</para>

<sect1 id="index-62">
<title>管理项目文件</title>

<para>以下几节将描述如何生成, 保存, 打开并关闭你需要编辑的项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm>-
-注意这并不包括翻译文件或pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>。那些是自动识别且相关编辑程序，例如
KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm> 会为你打开那些文件。</para>

<para>为了让你能更轻易的打开你的文件, Kdevelop包含了两个易于操作的树视图, 类似于一个
文件管理器, 如果你选择一个文件就可识别, 并在相关的编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm> 窗口打开它。
主视包含两个独立使用的窗口, 但它们通过项目编辑器相连, 因此你同样可以完成所有菜单
条操作。这样做的目的是允许你在同一时刻对两个窗口进行操作, 虽然只有一个可视。 C/C++
窗口则有另一个任务, 允许你一个一个的轻易完成对资源的编译, 这样你就可以检测它的执
行而无须在你的项目上运行一个完整的建立程序了。</para>

<para>当 C/C++ 窗口在顶部时就可以这样做。请从建立菜单中选择"编译文件Compile File <indexterm remap="idx"><primary>Compile File</primary></indexterm>"
或按下工具条中的相关按钮，你的文件就会保存并编译, 你也可以在输出output <indexterm remap="idx"><primary>output</primary></indexterm>窗口
中通过编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> 输出output <indexterm remap="idx"><primary>output</primary></indexterm>来控制任何错误errors <indexterm remap="idx"><primary>errors</primary></indexterm> 。</para>

<para>在IDE内你可以随你所意打开任意多个文本文件。所有打开的文件都在窗口菜单中列出, 这
样你就可以通过在菜单中选择相关文件名来进行切换。此外, 实际打开的文件将在Kdevelop
的窗口框架上显示其文件名。</para>

<sect2 id="index-63">
<title>生成和保存文件</title>

<para>要生成一个新文件, 请从文件菜单中选择"新建"。 这会打开"新建文件New File <indexterm remap="idx"><primary>New File</primary></indexterm>"对
话, 你可在此指定文件名和类型。另外, 你还必须设定目的目录及文件是否被加入项目。最
后, 万一你想要加入新的资源文件而不由类生成器生成一个新类，你还可以使用你的项目的
头部模板。
在文件创建以后, 你可以象平常一样编辑此新文件；如果你必须在不同的文件间切换, 你总
是可以通过文件树或窗口菜单切换回原来的文件。</para>

<para>对于保存变动, Kdevelop提供了各种各样的选项。标准的方式是通过从文件菜单中选择"保
存"或 "保存为"或按下工具条的保存按钮来保存文件。要想一次保存所有改动过的文件, 你
还可从文件菜单中选择"全部保存"。</para>

<para>现在, 当着手一个项目时, 如果在你对文件有很多的改动时发生了什么紧要的事，是十分恼
火的；有时你甚至会因为自己忘记保存文件的改动而狠狠责怪自己。Kdevelop会通过提供
的"自动保存"来关照此事, 这是缺省进行的，每5分钟会保存一次所有的文件。要选择另外
的保存时间间隔或激活此功能, 请参见<link linkend="KDevelop-Setup">KDevelop Setup</link>
以查看对设置setup <indexterm remap="idx"><primary>setup</primary></indexterm>选项的介绍。</para>

<para>另外, KDevelop takes care for all changes if you open another project or exit KDevelop.
你将被询问是否保存改动过的文件, 你还在此可以选择并指定你想要保存或不保存的文件。
此外, 当激活任何建立过程时, 你的文件会自动保存, 因此你不会奇怪为什么在你改变为资
源文件以后，你的应用并未象你所希望的那样去运行。唯一的例外是"编译文件Compile
File <indexterm remap="idx"><primary>Compile
File</primary></indexterm>"命令, 它只保存当前在资源编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>窗口中以可视化方式打开的资源文
件。</para>
</sect2>

<sect2 id="index-64">
<title>打开和关闭文件</title>

<para>要打开一个资源文件, 你也有很多选择。其中一种是编辑人员的标准方式, 即从文件菜单中
选择"打开"。你会看见一个"打开文件"对话, 允许你选择你想要编辑的文件。另外一种也许
更为常用的方式是从LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>中选择文件, 逻辑文件浏览器, 或RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>, 实时文件浏览
器(参见<link linkend="Overview">概要</link>)。文件树的优点是它们提供了到你的 ""一个快速可视的?路,
""LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>,它只显示通过类型你的项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm> , 并搜集于文件夹中。
你也可以通过在文件树上单击鼠标右键以另外一种方式为你的文件分类来设置LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>。
从弹出菜单中选择"新组", 然后你可以设置一个新的类, 或通过指定组的由逗号隔开的文件
扩展名来选择"编辑类"以安装新文件过滤器。
一个由KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>生成的项目的标准文件组是头部, 资源, GNU 及其他。另外, 在增
加了一个翻译文件以后, Kdevelop增加了一个"翻译"文件夹, 它包含了你的*.po 文件。</para>

<para>要关闭文件, 请从窗口菜单中选择要关闭的文件, 这会将打开的文件装载到前部的编辑器
editor <indexterm remap="idx"><primary>editor</primary></indexterm>。然后从文件菜单中选择"关闭"。如果你的文件有所改动, 你会被询问是否保
存它。当关闭项目时, 所有当前打开的文件会被检测是否有所改动，然后询问你是否需要保
存。</para>
</sect2>
</sect1>

<sect1 id="index-65">
<title>在文件中导航</title>

<para>以下将大体性指导你如何在你的文件中进行定位以更快找到你需要的东西。</para>

<para><emphasis remap="bf"> 如何找到文件中的某行</emphasis></para>

<para><orderedlist><listitem>
<para>在视图菜单中选择"到。。。行" 或按下CTRL+G。对话区域"到。。。行"会出现。</para>
</listitem>
<listitem>
<para>插入你要去的行号。</para>
</listitem>
<listitem>
<para>按下确定。</para>
</listitem>
</orderedlist>
</para>

<para><emphasis remap="bf"> 如何设定书签</emphasis></para>

<para><orderedlist><listitem>
<para>将光标设置于你想要通过书签进入的行。</para>
</listitem>
<listitem>
<para>从"书签"菜单中选择"设置书签"。</para>
</listitem>
<listitem>
<para>一个弹出菜单会允许你想要为新书签设置的书签号。</para>
</listitem>
<listitem>
<para>选择书签号码。</para>
</listitem>
</orderedlist>
</para>

<para>另一种设置书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> 的方式是从"书签"-菜单中选择"加入书签"。这会将书签
设置给当前行并填入书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>-列表。文件浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>
还提供通过上下文菜单条"加入书签"给当前页设置一个书签。
<emphasis remap="bf"> 如何删除书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm></emphasis></para>

<para>书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>是为每个编辑窗口单独设置的---注意你的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>逼供
不和你为它设置的某文件相连。要删除所有书签, 请从书签菜单中选择"删除书签"。这会删
除实际位于顶部的窗口的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm> ，不管是头部窗口，C++窗口还是浏览器窗
口。</para>

<para><emphasis remap="bf"> 如何到一个设置了书签的行</emphasis></para>

<para><orderedlist><listitem>
<para>选择"书签"菜单，打开包含了你想要浏览的书签窗口的书签bookmarks <indexterm remap="idx"><primary>bookmarks</primary></indexterm>的弹出
菜单；不管是C++窗口还是头部窗口入口。</para>
</listitem>
<listitem>
<para>选择设置了书签的行。</para>
</listitem>
</orderedlist>
</para>

<para>为浏览器窗口选择书签将打开浏览器并装载页面。</para>
</sect1>

<sect1 id="index-66">
<title>利用键盘快捷键操作</title>

<para>使用编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>时, 你应该尽量熟悉一些键盘快捷方式shortcuts <indexterm remap="idx"><primary>shortcuts</primary></indexterm>，这会使
得放置光标编辑文件更加容易。完整的快捷方式参考列表于<link linkend="Overview">概要</link>。</para>

<para><programlisting>左移一个字母                                     Left Arrow
右移一个字母                                     Right Arrow
左移一个字                                       CTRL+Left Arrow
右移一个字                                       CTRL+Right Arrow
上移一行                                         Up Arrow
上移一行                                         Down Arrow
到行首                                           POS 1
到行末                                           END
向上一页                                         PageUp
向下一页                                         PageDown
到当前文件开头                                   CTRL+PageUp
到当前文件尾部                                   CTRL+PageDown
左移一个字母                                     SHIFT+Left Arrow
右移一个字母                                     SHIFT+Right Arrow
左移一个字                                       CTRL+SHIFT+Left Arrow
右移一个字                                       CTRL+SHIFT+Right Arrow
上移一行                                         CTRL+向上箭头
下移一行                                         CTRL+向下箭头
到行首                                           CTRL+POS 1
到行末                                           CTRL+END
向上一页                                         SHIFT+PageUp
向下一页                                         SHIFT+PageDown
到当前文件开头                                   CTRL+SHIFT+PageUp
到当前文件尾部                                   CTRL+SHIFT+PageDown
打开/关闭插入模式                                INS
将选中文本拷贝到剪贴板                           CTRL+C, CTRL+INS
从剪贴板插入文本                                 CTRL+V, SHIFT+INS
删除当前行                                       CTRL+K
在当前行后插入一行                               END, 再回车
在当前行后插入一行                               POS 1, 再回车
取消一编辑步骤                                   CTRL+Z
重做取消的步骤                                   CTRL+Y
制表                                             TAB
删除光标左边的字母                               退格键
删除光标右边的字母                               Delete
删除选中文本                                     选中文本, 再退格</programlisting>
</para>
</sect1>

<sect1 id="index-67">
<title>编辑窗口设置</title>

<para>Kdevelop内的编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm> 可以为特殊编辑需要设置为对所有编辑窗口都有效。这
样你设置颜色模式, 高亮颜色(还可参考文件的编程语言来设置)及自动文本设置，例如 tab-
并选取模式。以下将叙述如何通过"选项"菜单提供的设置对话设置这些选项。</para>

<sect2 id="index-68">
<title>一般设置</title>

<para>编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>的一般设置可以用选项菜单中的"编辑"来设置。选择相关参数值并在你
完成设置后按下确定。</para>

<sect3 id="index-69">
<title>编辑选项</title>

<para><variablelist>
<varlistentry>
<term>自动缩进:</term>
<listitem>
<para>这将编辑器设置为当键入一个新行时将光标放于第一行文字之下。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>回删时对齐:</term>
<listitem>
<para>当退格键按下时,这一选项将光标设置于上方第一行文
字之下.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>自动换行:</term>
<listitem>
<para>在"每行字符数:"中设置了后，文字将置于下一行</para>
</listitem>
</varlistentry>
<varlistentry>
<term>替换制表符:</term>
<listitem>
<para>当前文本中的定位装置由"制表符号宽度:" 值代替</para>
</listitem>
</varlistentry>
<varlistentry>
<term>删除后缀空格:</term>
<listitem>
<para>去除其后的空格</para>
</listitem>
</varlistentry>
<varlistentry>
<term>光标对齐:</term>
<listitem>
<para>当退格在行首输入时，将光标置于最后一行的尾部。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>自动加括号:</term>
<listitem>
<para>当括号(任何一种)打开时，在光标前生成一个反括号。</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect3>

<sect3 id="index-70">
<title>选择选项</title>

<para><variablelist>
<varlistentry>
<term>持续选择:</term>
<listitem>
<para>当把光标置于其他位置时，选取的选项保持选中</para>
</listitem>
</varlistentry>
<varlistentry>
<term>多行选择:</term>
<listitem>
<para>允许在文本种进行多种独立的选择。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>垂直选择:</term>
<listitem>
<para>允许文本的垂直选择。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>输入时删除:</term>
<listitem>
<para>在编写选择时删除一个选择。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Toggle Old:</term>
<listitem>
<para>只允许一种选择。当右另一种选择时会取消先前的选择。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>每行字符数:</term>
<listitem>
<para>设置一行可包含的最大列数。超过该值的包含了一个字母的单词会自
动断到下一行。</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect3>
</sect2>

<sect2 id="index-71">
<title>颜色</title>

<para>要改变编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>通常的面貌, 你可以通过从"选项"菜单中选择"编辑器颜色"定
义编辑器使用的一套颜色。你为以下项目可以设置颜色:
<itemizedlist>
<listitem>
<para>背景<emphasis remap="bf">background:      </emphasis>        编辑器的背景</para>
</listitem>
<listitem>
<para>文本背景<emphasis remap="bf">text background:  </emphasis>     	显示的文本的背景</para>
</listitem>
<listitem>
<para>选中<emphasis remap="bf">selected:         </emphasis>       选中文本的颜色</para>
</listitem>
<listitem>
<para>找到<emphasis remap="bf">found:            </emphasis>       通过"编辑"—"查找"，"重复查找"及"置换"
菜单在查找中找到的文本的颜色。</para>
</listitem>
<listitem>
<para>选中并找到<emphasis remap="bf">selected + found: </emphasis>       选中要查找及找到的文本的颜色</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-72">
<title>语法高亮</title>

<para>Kdevelop编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>的句法高亮模式可以通过两个对话设置；第一个你可以通过"
选项"-菜单中的"编辑器缺省"入口为句法高亮设缺省颜色。在那里，你可以社会字颜色，字
体及字体大小，例如关键字。选择缺省项目并设置所有需要的选项。</para>

<para>第二个设置对话configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>可通过"选项"-菜单中的"句法高亮"入口进
入。这允许你为编程语言设置文件过滤器, 例如C++的*.cpp, *.h。然后选择你要设置的项
目。如果你希望使用你已经在"编辑器对话" 设置的缺省值, 请选择项目风格及项目字体选
区的"缺省"框。这会为选中项读除缺省设置。在按下确定后, 你新的值即生效并由编辑器
editor <indexterm remap="idx"><primary>editor</primary></indexterm>使用。</para>
</sect2>
</sect1>

<sect1 id="index-73">
<title>查找和替换</title>

<sect2 id="index-74">
<title>单个文件查找</title>

<para><emphasis remap="bf"> 如何在实际编辑窗口找到一个或更多字符</emphasis>
<orderedlist><listitem>
<para>从"编辑"-菜单中选择"查找"。这会打开查找对话。</para>
</listitem>
<listitem>
<para>在编辑区域指明要查找的语句。下拉菜单会提供选择前一次查找的语句。</para>
</listitem>
<listitem>
<para>选择另外的选项，例如"只查找整个单词"</para>
</listitem>
<listitem>
<para>按下"确定"。</para>
</listitem>
</orderedlist>
</para>

<para>要重复查找键入查找对话中的一个语句, 按下F3。</para>
</sect2>

<sect2 id="index-75">
<title>在多个文件中查找</title>

<para>由于查找函数只涉及当前可见的单个文件中的查找, 你的局限性很大。但你常常想在你的整
个项目中查找同一语句。因此, Kdevelop包含了一个文本查找工具<literal remap="tt">grep <indexterm remap="idx"><primary>grep</primary></indexterm></literal>-对话,
让你在你通过设置开始查找的目录和/或mime-类型来指定的所有文件中进行查找。因此，
指定确切目录及mime-类型将减少Kdevelop阅读你的文件及显示结果所需要的时间。要开
始在多个文件中的查找, 请从"编辑"-菜单中选择"在文件...中查找"。查找对话会打开并让
你输入:</para>

<para><itemizedlist>
<listitem>
<para>要查找的文本(样式)</para>
</listitem>
<listitem>
<para>用于查找的模板</para>
</listitem>
<listitem>
<para>要查找的文件的模拟类型</para>
</listitem>
<listitem>
<para>开始查找的目录</para>
</listitem>
<listitem>
<para>如果查找在所有包含的子目录中是递归的</para>
</listitem>
</itemizedlist>
</para>

<para>在缺省状态, 文本查找工具grep <indexterm remap="idx"><primary>grep</primary></indexterm>-对话设置为在你的项目目录下启动并在实现
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>和头文件下递归的工作。</para>

<para>你甚至可以通过使用以下选项扩展你的查找样式:</para>

<para><orderedlist><listitem>
<para><emphasis remap="bf">.</emphasis> 匹配任何字符</para>
</listitem>
<listitem>
<para><emphasis remap="bf">&&circ;;</emphasis> 匹配行首</para>
</listitem>
<listitem>
<para><emphasis remap="bf">$</emphasis> 匹配行尾</para>
</listitem>
<listitem>
<para><emphasis remap="bf">\&lt; </emphasis> 匹配词首</para>
</listitem>
<listitem>
<para><emphasis remap="bf">\&gt; </emphasis> 匹配词尾</para>
</listitem>
</orderedlist>
</para>

<para>要想重复搜寻, 你还可以使用可用的运算符:
<orderedlist><listitem>
<para><emphasis remap="bf">?</emphasis> 前一个项目匹配一次以下</para>
</listitem>
<listitem>
<para><emphasis remap="bf">*</emphasis> 前一个项目匹配为0或多次</para>
</listitem>
<listitem>
<para><emphasis remap="bf">+</emphasis> 前一个项目匹配一次或多次</para>
</listitem>
<listitem>
<para><emphasis remap="bf">&&lcub;; n &&rcub;;</emphasis> 前一个项目匹配正好<emphasis>n</emphasis> 次</para>
</listitem>
<listitem>
<para><emphasis remap="bf">&&lcub;; n,&&rcub;;</emphasis> 前一个项目匹配<emphasis>n</emphasis> 次或更多次</para>
</listitem>
<listitem>
<para><emphasis remap="bf">&&lcub;;,n &&rcub;;</emphasis> 前一个项目匹配少于<emphasis>n</emphasis>次</para>
</listitem>
<listitem>
<para><emphasis remap="bf">&&lcub;;n,m&&rcub;;</emphasis> 前一个项目匹配至少<emphasis>n</emphasis> 次但少于<emphasis>m</emphasis> 次</para>
</listitem>
</orderedlist>

括号内的语句的参考通过注释<emphasis>\n</emphasis>可用。</para>

<para>在指定好你的查找后, 按下"查找"。结果将显示在结果窗口。要跳至某文件或行号, 请选择
结果行并按下回车或双击该结果。编辑器将自动打开相关文件并将光标置于结果行。这允许
完全指定任何查找操作并给除确切结果。</para>

<para>Kdevelop还提供一些更专业化的函数来使用editor <indexterm remap="idx"><primary>editor</primary></indexterm>s和浏览器中的文本查找工具
grep <indexterm remap="idx"><primary>grep</primary></indexterm>。在任何一个窗口中选择你要查找的语句并按下SHIFT+F2，或从右击鼠标弹出
的菜单中选择 "grep <indexterm remap="idx"><primary>grep</primary></indexterm>:&&lt;;your&&lowbar;;expression&&gt;;"。这将请求文本查找工具grep <indexterm remap="idx"><primary>grep</primary></indexterm>
在你的项目目录的文件中查找这一语句并立即显示结果。如上所述切换至结果。从编辑器窗
口内, 将光标放置于一个单词上并开始查找；光标下的词即查找样式。</para>
</sect2>

<sect2 id="index-76">
<title>文件中查找</title>

<para>着手一个项目时, 你常常需要关于你要使用的元素函数member functions <indexterm remap="idx"><primary>member functions</primary></indexterm> 的参数- 常
常是你符合你需要的函数名, 但是参数是很难记的。因此, 也由于其他一些可能的目的,
Kdevelop包含了一个查找函数，结合文件浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>来查找出现
在你的文件中的语句。要使用这以查找函数, 你需要先正确设置文件浏览器
documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>并创建查找数据库 。要激活文件中查找，请按以下步骤:</para>

<para><orderedlist><listitem>
<para>将光标置于你要搜寻或标注语句的文字中</para>
</listitem>
<listitem>
<para>从帮助菜单中Help-menu <indexterm remap="idx"><primary>Help-menu</primary></indexterm>选择"查找标注文本" 或按下鼠标右键以打开上下文菜
单；再选择"查找: "语句"。</para>
</listitem>
<listitem>
<para>在查找结果search result <indexterm remap="idx"><primary>search result</primary></indexterm>页面显示在文件浏览器documentation
browser <indexterm remap="idx"><primary>documentation
browser</primary></indexterm>中后, 选择你认为可能包含你需要的信息的页面。</para>
</listitem>
<listitem>
<para>选中文件页面将显示，你的查找结果search result <indexterm remap="idx"><primary>search result</primary></indexterm>也会标注。要显示同一个
文件页面中的下一个查找结果, 请按下F3。</para>
</listitem>
</orderedlist>

这允许你轻易找到你想要的信息。要使用结果, 文件浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm>
允许选择并拷贝到剪贴板。然后你正在编辑的文件并从"编辑"-菜单选择"粘贴"。</para>

<para>要得到关于如何使用文件的详细描述, 请参见<link linkend="Using-the-Searchindex">使用搜索索引</link>。</para>
</sect2>

<sect2 id="index-77">
<title>替换文本</title>

<para>要替换一个语句, 请从"编辑"-菜单中选择"查找并替换"。 "查找并替换"-对话允许你指定
要替换的语句及要替换为的语句。接着按下"确定"。第一个找到的语句将被标注, 这样你
就可以看见该语句的位置及所在文本。然后你可以通过一个对话指定是否该语句被替换。当
查找到达当前文件尾部而结束后, 你会被询问是否愿意从头开始查找。如果你已经完成，请
选择"取消"。</para>
</sect2>
</sect1>

<sect1 id="index-78">
<title>打印</title>

<para>由于Kdevelop是设计来为开发者提供进入文件及信息的最好的通路和减少开发周期, 它还
包括了一个新的打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>设备，它使用了两个在Unix-系统可用的一般的打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm>程序, 即<emphasis>a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm></emphasis> (ASCII-to-Postscript)和<emphasis>enscript <indexterm remap="idx"><primary>enscript</primary></indexterm></emphasis>.
除此之外, 你还可以通过直接使用lpr (行式打印机设备) 来打印。由于使用a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>或
enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 提供了大多数打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>的选项, 你应该在你的系统上先安装任
意一个；两个程序通常都随发布的软件发布, 因此你可以毫无问题的得到它们。但是在打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm>之前, 你应该先看看可用的设置对话configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>s来根据
你的需要准备号打印的输出output <indexterm remap="idx"><primary>output</primary></indexterm>。下面的几节将描述如何设置Kdevelop来打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm> 文件。</para>

<sect2 id="index-79">
<title>设置打印机</title>

<para>打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 程序可以通过从文件菜单"File"-menu <indexterm remap="idx"><primary>"File"-menu</primary></indexterm>中选择"打印"；在打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm> 对话中, 通过左上角的下拉菜单选择程序。然后按下右边的"选项"按钮。
这将打开选中要使用的程序的设置。设置程序的另一种方式是从"选项"菜单中选择"打印机
设置..."；然后选择"a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>" 或"enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>"。</para>

<sect3 id="a2ps-a2ps-configuration-options">
<title>设置选项a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm> Configuration Options</title>

<sect4 id="index-80">
<title>打印</title>

<para><itemizedlist>
<listitem>
<para>头部<emphasis remap="bf">header:</emphasis>  将一个头部框架加入页面</para>
</listitem>
<listitem>
<para>文件名<emphasis remap="bf">filename:</emphasis>  如果选中, 头部框架以文件名作为器内容</para>
</listitem>
<listitem>
<para>登录<emphasis remap="bf">login:</emphasis>  将用户ID加入页面右上角</para>
</listitem>
<listitem>
<para>边界<emphasis remap="bf">borders:</emphasis>  为下一页加入框架边界</para>
</listitem>
<listitem>
<para>日期及时间<emphasis remap="bf">Date & Time:</emphasis>  加入打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 日期及时间</para>
</listitem>
<listitem>
<para>排列文件<emphasis remap="bf">align files:</emphasis>  在同一页上打印几个文件, 可用于双页打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm> 模式</para>
</listitem>
<listitem>
<para>设置标签尺寸<emphasis remap="bf">set TAB size:</emphasis>  为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 标签设置标签尺寸</para>
</listitem>
<listitem>
<para>头部文本<emphasis remap="bf">headertext:</emphasis> 当文件名取消选中并允许插入另一个文本到头部框架时
可用</para>
</listitem>
<listitem>
<para>字体大小<emphasis remap="bf">fontsize:</emphasis>  为文本设置字体大小。缺省的字体大小是9</para>
</listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="printing-printing">
<title>文本打印printing <indexterm remap="idx"><primary>printing</primary></indexterm></title>

<para><itemizedlist>
<listitem>
<para>分裂行<emphasis remap="bf">cut lines:</emphasis>  如果以行的内容太长无法打印，则将行的内容切断。如果
取消选中, 行将被分裂。</para>
</listitem>
<listitem>
<para>解释TAB,BS及FF<emphasis remap="bf">interpret TAB, BS and FF:</emphasis> 解释标签, 退格及快速前进字
符。</para>
</listitem>
<listitem>
<para>替换不可打印的字符<emphasis remap="bf">replace non-printing <indexterm remap="idx"><primary>printing</primary></indexterm> character by space:</emphasis> 如果
文件包含不可打印的字符, 这些字符将以空格字符代替。</para>
</listitem>
<listitem>
<para>以ISO-Latin 1打印非ASCII字符<emphasis remap="bf">print non-ASCII character as ISO-Latin 1:</emphasis>
以ISO-Latin 1输出output <indexterm remap="idx"><primary>output</primary></indexterm>模式打印出未包含于ASCII 格式的字符</para>
</listitem>
<listitem>
<para>粗体<emphasis remap="bf">bold font:</emphasis> 以粗体打印出整个文本。</para>
</listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="index-81">
<title>记数</title>

<para><itemizedlist>
<listitem>
<para>行记数<emphasis remap="bf">numbering lines:</emphasis>  激活后从上到下为所有行记数</para>
</listitem>
<listitem>
<para>页记数<emphasis remap="bf">numbering pages:</emphasis> 允许通过以下方式选择页记数模式:
<itemizedlist>
<listitem>
<para>单个文件<emphasis remap="bf">file single:</emphasis> 从1开始为每个文件页面记数</para>
</listitem>
<listitem>
<para><emphasis remap="bf">file together:</emphasis>  添加到第一个记数页所有后面的页面</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">lines per page:</emphasis>  设置打印时每页最大的行数</para>
</listitem>
</itemizedlist>
</para>
</sect4>
</sect3>

<sect3 id="enscript-enscript">
<title>enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 设置选项</title>

<sect4 id="index-82">
<title>头部</title>

<para><itemizedlist>
<listitem>
<para>奇特的头部<emphasis remap="bf">Fancy Header:</emphasis> 增加一个奇特的头部</para>
</listitem>
<listitem>
<para>头部文本<emphasis remap="bf">Header Text:</emphasis> 允许加入头部文本
<itemizedlist>
<listitem>
<para>文本<emphasis remap="bf">text:</emphasis> 设置文本内容</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">position:</emphasis> 设置文本内容位置为左/中/右</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>登录<emphasis remap="bf">Login:</emphasis> 将用户ID加入头部
<itemizedlist>
<listitem>
<para>登录<emphasis remap="bf">login:</emphasis> 允许加入用户ID</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">position:</emphasis> 设置用户ID的位置</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>文件名<emphasis remap="bf">Filename:</emphasis> 将文件名加入头部
<itemizedlist>
<listitem>
<para>文件名长度<emphasis remap="bf">Size of filename:</emphasis> 以全名或简写加入文件名, 意即完整路径或
只是文件名</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">Position:</emphasis> 设置文件名的位置</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>主机名<emphasis remap="bf">Hostname:</emphasis> 为头部加入主机名
<itemizedlist>
<listitem>
<para>主机名<emphasis remap="bf">hostname:</emphasis> 允许加入主机名</para>
</listitem>
<listitem>
<para>主机名长度<emphasis remap="bf">size of hostname:</emphasis> 设置主机名的长度</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">Position:</emphasis> 设置主机名的位置</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="index-83">
<title>日期与时间</title>

<para><itemizedlist>
<listitem>
<para>当前日期<emphasis remap="bf">Current Date:</emphasis> 包含当前日期
<itemizedlist>
<listitem>
<para>当前日期<emphasis remap="bf">current date:</emphasis> 允许加入当前日期</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">position:</emphasis> 为日期条目设置位置</para>
</listitem>
<listitem>
<para>格式<emphasis remap="bf">format:</emphasis> 设置日期格式</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>修改日期<emphasis remap="bf">Modification Date:</emphasis> 包括上一次修改的日期
<itemizedlist>
<listitem>
<para>修改日期<emphasis remap="bf">modification date:</emphasis> 允许加入当前日期</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">position:</emphasis> 为日期条目设置位置</para>
</listitem>
<listitem>
<para>格式<emphasis remap="bf">format:</emphasis> 设置日期格式</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>当前时间<emphasis remap="bf">Current Time:</emphasis> 包括当前时间
<itemizedlist>
<listitem>
<para>当前时间<emphasis remap="bf">current time:</emphasis> 允许加入当前时间</para>
</listitem>
<listitem>
<para><emphasis remap="bf">AM</emphasis>PM:/ 使用AM/PM 或 24h 格式</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">Position:</emphasis> 为时间条目设置位置</para>
</listitem>
<listitem>
<para>格式<emphasis remap="bf">Format:</emphasis> 设置时间格式</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>修改时间<emphasis remap="bf">Modification Time:</emphasis> 包括上一次修改的时间
<itemizedlist>
<listitem>
<para>修改时间<emphasis remap="bf">modification time:</emphasis> 允许加入时间修改</para>
</listitem>
<listitem>
<para><emphasis remap="bf">AM</emphasis>PM:/ 使用AM/PM 或 24h 格式</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">Position:</emphasis> 为时间条目设置位置</para>
</listitem>
<listitem>
<para>格式<emphasis remap="bf">Format:</emphasis> 设置时间格式</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="index-84">
<title>页面布局</title>

<para><itemizedlist>
<listitem>
<para>记数及边界<emphasis remap="bf">Numbering & Border:</emphasis>
<itemizedlist>
<listitem>
<para>行记数<emphasis remap="bf">numbering lines:</emphasis> 为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>加入文档的行号</para>
</listitem>
<listitem>
<para>边界<emphasis remap="bf">borders:</emphasis> 为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>加入页面边界</para>
</listitem>
<listitem>
<para>页记数<emphasis remap="bf">numbering pages:</emphasis> 为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>加入页记数</para>
</listitem>
<listitem>
<para>文件排列<emphasis remap="bf">align files:</emphasis> 为页记数添加文件</para>
</listitem>
<listitem>
<para>每页行数<emphasis remap="bf">lines per page:</emphasis> 每页最多行数</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>格式与标签<emphasis remap="bf">Format and TAB:</emphasis>
<itemizedlist>
<listitem>
<para>设置标签尺寸<emphasis remap="bf">set TAB size:</emphasis> 为解释执行TABs设置TAB尺寸</para>
</listitem>
<listitem>
<para>头部字体<emphasis remap="bf">font for header:</emphasis> 为头部文本设置使用的字体</para>
</listitem>
<listitem>
<para>正文字体<emphasis remap="bf">font for body:</emphasis> 设置正文字体(文件内容)</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>文本打印<emphasis remap="bf">Textprinting <indexterm remap="idx"><primary>printing</primary></indexterm>:</emphasis>
<itemizedlist>
<listitem>
<para>断行<emphasis remap="bf">cut lines:</emphasis> 断开太长的行。未选中则行将断开</para>
</listitem>
<listitem>
<para>由空格取代非打印字符<emphasis remap="bf">replace non-printing <indexterm remap="idx"><primary>printing</primary></indexterm> character by space:</emphasis> 由
空格取代打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 字符集不支持的字符</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>其他选项<emphasis remap="bf">Other Options:</emphasis>
<itemizedlist>
<listitem>
<para>目录表格<emphasis remap="bf">table of contents:</emphasis> 增加包含关于打印文件, 页记数等信息的目录
页的表格。</para>
</listitem>
<listitem>
<para>高亮条<emphasis remap="bf">Highlight bars:</emphasis>
<itemizedlist>
<listitem>
<para>高亮条<emphasis remap="bf">highlight bars:</emphasis> 打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>时高亮条的行</para>
</listitem>
<listitem>
<para>改变周期<emphasis remap="bf">cycle fo change:</emphasis> 设置改变高亮模式的行数</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>包裹的行<emphasis remap="bf">Wrapped line:</emphasis>
<itemizedlist>
<listitem>
<para>标注包裹的行<emphasis remap="bf">mark wrapped lines:</emphasis> 分裂的行在打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>时标
注</para>
</listitem>
<listitem>
<para>包裹的行的值<emphasis remap="bf">value for wrapped line:</emphasis> 原来的行分裂为新行的预设值</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect4>

<sect4 id="index-85">
<title>下划线</title>

<para><itemizedlist>
<listitem>
<para>文本<emphasis remap="bf">Text:</emphasis> 设置要下划线的文本</para>
</listitem>
<listitem>
<para>位置<emphasis remap="bf">Position:</emphasis> 设置下划线文本的位置</para>
</listitem>
<listitem>
<para>字体<emphasis remap="bf">Font:</emphasis> 设置用于下划线的字体</para>
</listitem>
<listitem>
<para>角度<emphasis remap="bf">Angle:</emphasis> 设置下划线文本的角度</para>
</listitem>
<listitem>
<para>灰度<emphasis remap="bf">Gray scaling:</emphasis> 设置下划线文本的灰度</para>
</listitem>
<listitem>
<para>风格<emphasis remap="bf">Style:</emphasis> 设置下划线文本打印为加边框或填充</para>
</listitem>
</itemizedlist>
</para>
</sect4>
</sect3>
</sect2>

<sect2 id="index-86">
<title>打印对话</title>

<sect3 id="index-87">
<title>直接打印选项</title>

<para><itemizedlist>
<listitem>
<para>程序<emphasis remap="bf">Program:</emphasis> 设置打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>要使用的打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>程序:
a2ps <indexterm remap="idx"><primary>a2ps</primary></indexterm>, enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 或lpr</para>
</listitem>
<listitem>
<para>打印机<emphasis remap="bf">Printer:</emphasis> 设置打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>要使用的打印机</para>
</listitem>
<listitem>
<para>输出定位<emphasis remap="bf">Output location:</emphasis> 为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 到一个文件, 选择输出定
位 output <indexterm remap="idx"><primary>output</primary></indexterm> location</para>
</listitem>
<listitem>
<para>方向<emphasis remap="bf">Orientation:</emphasis> 设置打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>方向未横向或纵向</para>
</listitem>
<listitem>
<para>拷贝<emphasis remap="bf">Copy:</emphasis> 设置每页要拷贝的数量</para>
</listitem>
<listitem>
<para>纸张大小<emphasis remap="bf">Paper Size:</emphasis> 设置要使用的纸张大小</para>
</listitem>
<listitem>
<para>输出格式<emphasis remap="bf">Output Format:</emphasis> 如果使用enscript <indexterm remap="idx"><primary>enscript</primary></indexterm> 作为打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>
程序, 你可以选择附言或html打印printing <indexterm remap="idx"><primary>printing</primary></indexterm></para>
</listitem>
<listitem>
<para>缺省打印设置<emphasis remap="bf">Default Printsettings:</emphasis> 设置打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>时使用的缺省
值</para>
</listitem>
<listitem>
<para>打印<emphasis remap="bf">Outprinting <indexterm remap="idx"><primary>printing</primary></indexterm>:</emphasis>
<itemizedlist>
<listitem>
<para>页打印<emphasis remap="bf">Page Printing:</emphasis> 设置在一张纸上打印一页或两页</para>
</listitem>
<listitem>
<para>页<emphasis remap="bf">Pages:</emphasis> 选择使用enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>的页为所有页，奇数或偶数页</para>
</listitem>
<listitem>
<para>精细打印<emphasis remap="bf">Pretty Print:</emphasis>
<itemizedlist>
<listitem>
<para>精细打印<emphasis remap="bf">pretty-print:</emphasis> 允许enscript <indexterm remap="idx"><primary>enscript</primary></indexterm>的精细打印模式</para>
</listitem>
<listitem>
<para>颜色<emphasis remap="bf">color:</emphasis> 打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>使用的颜色</para>
</listitem>
<listitem>
<para>精细打印模式<emphasis remap="bf">Pretty Print Mode:</emphasis> 根据你的文件格式设置打印
printing <indexterm remap="idx"><primary>printing</primary></indexterm> 模式</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect3>

<sect3 id="index-88">
<title>文件选择</title>

<para>文件选择对话可以通过打印printing <indexterm remap="idx"><primary>printing</primary></indexterm> 对话上的"文件"按钮来进入。文件的选择允许
以一定的标准指定要打印出的文件:
<itemizedlist>
<listitem>
<para>文件选择<emphasis remap="bf">File Selection:</emphasis>
<itemizedlist>
<listitem>
<para>当前<emphasis remap="bf">current:</emphasis> 当前打开的在编辑窗口可见的文件</para>
</listitem>
<listitem>
<para>项目中所有文件<emphasis remap="bf">all in project:</emphasis> 当前打开的包含于项目的所有文件</para>
</listitem>
<listitem>
<para>自选文件<emphasis remap="bf">self chosen files:</emphasis> 允许通过文件选择选取要打印的文件</para>
</listitem>
<listitem>
<para>所有cpp文件<emphasis remap="bf">all cpp files:</emphasis> 打印出所有项目的资源文件</para>
</listitem>
<listitem>
<para>所有头部<emphasis remap="bf">all headers:</emphasis> 打印出项目所有的头部文件</para>
</listitem>
<listitem>
<para>改动的文件<emphasis remap="bf">changed files:</emphasis> 允许指定在一个时间跨度内改动的文件:</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>改动的文件<emphasis remap="bf">Changed Files:</emphasis>
<itemizedlist>
<listitem>
<para>之间<emphasis remap="bf">Between:</emphasis> 指定在。。之后所有改动的文件:
<itemizedlist>
<listitem>
<para>日期<emphasis remap="bf">Date:</emphasis> 改动文件时的日期</para>
</listitem>
<listitem>
<para>时间<emphasis remap="bf">Time:</emphasis> 改动文件时的时间</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para><emphasis remap="bf">And:</emphasis> 指定所有在。。。之前改动的文件:
<itemizedlist>
<listitem>
<para>日期<emphasis remap="bf">Date:</emphasis> 文件改动的日期</para>
</listitem>
<listitem>
<para>时间<emphasis remap="bf">Time:</emphasis> 文件改动的时间</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>自选文件<emphasis remap="bf">Self Chosen Files:</emphasis> 当自选文件被选中时可用(见上)
<itemizedlist>
<listitem>
<para>增加<emphasis remap="bf">add:</emphasis> 按下它以增加一个要打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>的文件，在行编辑区域</para>
</listitem>
<listitem>
<para>删除<emphasis remap="bf">delete:</emphasis> 从打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>列表中删除一个选中的文件</para>
</listitem>
<listitem>
<para>清除<emphasis remap="bf">clear:</emphasis> 清除打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>列表</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
</sect3>

<sect3 id="index-89">
<title>打印预览</title>

<para>打印预览让你控制输出output <indexterm remap="idx"><primary>output</primary></indexterm> 的样子。因此, Kdevelop使用<emphasis>ghostview</emphasis> 或
<emphasis>kghostview</emphasis>程序。当按下任一个打印printing <indexterm remap="idx"><primary>printing</primary></indexterm>对话中的预览按钮时, 你将看到
一个输出output <indexterm remap="idx"><primary>output</primary></indexterm>模板，为你显示当前设置的选项的效果。</para>
</sect3>
</sect2>
</sect1>
</chapter>

<chapter id="projects">
<title>项目</title>

<sect1 id="index-91">
<title>项目类型</title>

<sect2 id="index-92">
<title>程序</title>

<para>KDevelop 以.kdevprj结尾创建了一个项目文件。该文件包含你的项目的所有信息, 因此小
心不要将它删除了。它存储在项目的基本目录下，在装载项目时必须打开。项目文件保存了
你的例如文件属性，安装路径，发布状态及编译选项compiler options <indexterm remap="idx"><primary>compiler options</primary></indexterm> (CXXFLAGS)
的的文件的所有信息。文件属性设置允许你记录文件位置线索。</para>

<para>有了应用指南KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>, 你可以根据你选择的应用类型创建一个心的应用项目。眼
下, 应用指南KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>可生成四种应用框架, 如下:
<itemizedlist>
<listitem>
<para>单一的文件界面(SDI) KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-应用包含一个菜单条, 一个工具条和一个状态条。
它包含基本控制资源管理以允许将应用框架扩展为一个独特的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 应用。应用框架还
包含状态条帮助信息。从编程人员的眼光来看,它基于三个依靠MVC-concept (Model-View-
Controller)的特别的应用类classes <indexterm remap="idx"><primary>classes</primary></indexterm>。从技术上来说, 基本的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>可能
不是以那样浏览的, 但是它的建造至少时逻辑化的，以使用GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>来建造应用。
</para>
</listitem>
<listitem>
<para>一个基于KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>的应用框架窗口。这以应用类型为那些想从草稿开发自己的程序
的人提供了很大的灵活性, 但也可用作开发应用或模块的向导的基础。
</para>
</listitem>
<listitem>
<para>一个只基于Qt的程序框架。对于那些希望使用Qt-library <indexterm remap="idx"><primary>Qt-library</primary></indexterm>作为GUI <indexterm remap="idx"><primary>GUI</primary></indexterm> 界
面的人, 我们尽量为你提供一个聪明的框架以支持你的应用开发。由于它完全支持Qt编程,
对于只使用Qt创建一个全功能的应用应该没有多大的问题。
</para>
</listitem>
<listitem>
<para>一个C++ 程序结构。这一应用类型旨在为那些希望编写基于终端的 C++程序的人服
务。只需在main()中去除"Hello World" 行并构造你的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>，方式上 Kdevelop
与KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>应用一样。</para>
</listitem>
<listitem>
<para>一个为C编程人员准备的C编程框架。这也是一个基于终端的应用，但只使用C 编
译器。</para>
</listitem>
</itemizedlist>
</para>

<para>此外, Kdevelop让你可以使用已存在的项目。它们可以由程序员自己通过设置和Makefiles
来设定任何选项。至于执行及建立过程, 当前状态只允许与其他基类相同的结构。用应用向
导创建一个自定义项目并将你的文件加入项目以允许类浏览器的扫描。</para>

<para>为保证建立过程, 你自定义的项目必须在一个匹配你的项目的小写字母名的子目录中包含所
有资源；二进制文件的执行也限于此小写项目名。</para>

<para>注意，Kdevelop并部把任何信息写入Makefiles 或设置文件。必须由你负责任何项目操作
并亲自进行设置。</para>
</sect2>

<sect2 id="index-93">
<title>库</title>

<para>创建库的一般项目类型暂时还不能用。无论如何, 创建库对KDevelop来说不是不可能的。
这里有一些方法指导:</para>

<para><itemizedlist>
<listitem>
<para>无论何时当你的项目的子目录得到另一个包含资源文件的子目录,Kdevelop会建立一
个它们的静态库。那意味着静态库已获得自动创建的支持以挑选项目源文件。注意。静态库
其后是二进制文件的一部分，不会得到安装。</para>
</listitem>
<listitem>
<para>要创建一个共享的库, 你可以选择创建另一个项目子目录。在这个子目录中创建的源
文件包含在项目内，因此在类浏览器中作为根部的类可用。要创建共享的库,编程手册
<ulink url="programming/index-19.html">KDevelop编程手册</ulink> 提
供一个 Makefile.am 模板。如果子目录的Makefile被加到configure.in 脚本, 你只需运
行"Autoconf 和automake" 及 "Configure"以创建Makefiles。创建只有在子目录中使用创
建命令才行, 因为Kdevelop从原始项目子目录中激活创建。另一个创建共享库的可能的方
法是根据编程手册里的模板，依照<link linkend="Project-Hacking">项目改动</link>
章节中中描述的项目修改规则，手动的改变原始项目录的Makefile.am。</para>
</listitem>
<listitem>
<para>要安装一个共享的库, 你必须查看KDE-文件-系统标准，编程手册<ulink url="programming/index-13.html">KDevelop编程手册</ulink>中有描
述。 </para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="index-94">
<title>多目标</title>

<para>对于一些项目来说, Kdevelop当前状态的设备不会持久。那些是包含了多个目标的项目，
好比包含了多个应用的包。象"执行"一样的命令要求开发者只建立一个目标。你必须编写你
自己的到Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>的入口并为创建另外的二进制和十进制文件创造目录，那些项
目类型只有这样才获得支持。但是, 一个建立过程总是不顾及实际目标是什么而激活你的建
立程序；这样这些函数仍然可以使用(限定建立是从主项目子目录激活的)
另一个仍然使用这种类型及得到二进制本身的方法是创建空的项目并将它们的子目录到其后
会包含所有资源的目录并与项目文件相连project files <indexterm remap="idx"><primary>project files</primary></indexterm>。然后你可以根据其项目文件独
立的装载每个目标；这也允许执行及调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm> 目标。</para>

<para>按照<link linkend="Project-Hacking">项目改动</link>一章中解释的规则及以下的对编写主
项目子目录的 Makefile.am的指导(所有改动都在KDevelop 写区域外)，主项目子目录内有多
个二进制或库是可能的:</para>

<para><itemizedlist>
<listitem>
<para>将你的目标加入bin&&lowbar;;PROGRAMS ，如果它可执行的话</para>
</listitem>
<listitem>
<para>加入你的库声明行，如果它是共享的库</para>
</listitem>
<listitem>
<para>加入与最初二进制的建立相同的声明:
<itemizedlist>
<listitem>
<para>newtarget&&lowbar;;METASOURCES</para>
</listitem>
<listitem>
<para>newtarget&&lowbar;;LD&&lowbar;;FLAGS</para>
</listitem>
<listitem>
<para>DISTCLEANFILES</para>
</listitem>
<listitem>
<para>复制信息: 原始二进制的入口，由newtarget&&lowbar;;SOURCES代替target&&lowbar;;SOURCES,
newtarget.pot代替target.pot
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
<listitem>
<para>增加你的资源，例如Kdevelop二进制或库的写区域</para>
</listitem>
<listitem>
<para>要安装静态库, 用Kdevelop子目录内的"自动生成"来建造库。然后根据所需设置在书
写区域外修改Makefile.am。</para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>

<sect1 id="new-project-new-projects">
<title>新项目New Project <indexterm remap="idx"><primary>New Project</primary></indexterm>s</title>

<para>Kdevelop应用向导允许四种不同类型的应用的创建，为每一个都创建一个框架。所有项目都
使用GNU标准开发工具，如这本手册的要求部分所述。对于KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 应用，向导提供两
种不同的框架，KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-应用，提供一个带文件类型，视图及应用的基本类classes <indexterm remap="idx"><primary>classes</primary></indexterm>的
完全的应用。这包括菜单条，工具条，状态条及继承了KTMainWindow类的主窗口的的创建。
KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-Mini-应用只给出一个空的视图。这种类型的项目可用于创建小型桌面工具或其
他在框架提供的已有代码上没有很多改变简单应用。一个Qt-应用提供纯Qt程序的创建，如
果你wish no dependencies towards the KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm> for end-users.
Qt-应用也是通过使用树的基本类classes <indexterm remap="idx"><primary>classes</primary></indexterm>，例如KDE-标准-应用创建的，并提供菜单条，
工具条及状态条。</para>

<para>C++应用类型提供一个框架以创建命令行应用。它准备好运行，缺省显示"Hello World" 作
为唯一操作。这对于那些希望先不使用GUI <indexterm remap="idx"><primary>GUI</primary></indexterm>编写应用或那些使用C++或C进行命令行编
程的的C++ 学习者可能有用。C编程人员也可以利用纯C项目，它要求任何C-编译器最小化。</para>

<para>向导询问你的项目名称，版本及项目目录建立的地点。另外，你的名字及Email地址也会问
及以将其插入头部和你的资源文件顶部的cpp模板，以及*.lsm 文件内的条目。</para>
</sect1>

<sect1 id="index-95">
<title>打开和关闭项目</title>

<para>Kdevelop缺省设置为在启动时打开上次装载的项目。这允许快速启动，但你也许希望改变它
以只启动IDE而不打开任何项目。要防止缺省行为，可使<link linkend="KDevelop-Setup">KDevelop Setup</link>对话里的"装载上次项目"选项无效。</para>

<para>要打开另一个项目，从“项目”菜单中选择"打开"或按下工具条上的"打开项目"按钮。万一
你当前已经打开了另外一个项目，它将被关闭。如果你当前的项目包含了未保存的文件，你
将被询问保存文件。因此，你可以选择要保存的文件或关闭时不保存或一次全部保存。
接着你会看见一个"大项目"对话，你可在此变为包含了要装载的项目文件的目录。Kdevelop
项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm>有<emphasis>*.kdevprj</emphasis> mime-类型，它也是由一个项目按钮显示。选择
项目文件并按下"打开"。在装载项目时，类浏览器扫描所有文件并建立最初的类的树，这样
你可以开始通过直接使用类浏览器着手于项目了。</para>

<para>另一个打开项目的好办法是在KFM中选择项目文件，KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 文件管理器。这将启动
Kdevelop并装载选中的项目文件。你还可以通过命令行打开项目，输入<literal remap="tt">kdevelop
projectname.kdevprj</literal>。</para>

<para>在关闭Kdevelop时，你的项目文件会自动保存，IDE会检测你是否改动过任何项目文件。然
后会询问你在退出前是否保存任何改动过的文件。关闭时可用的选项和在装载另一个项目前
关闭一个项目时使用的一样。</para>
</sect1>

<sect1 id="index-96">
<title>编辑一个项目</title>

<para>在你使用应用向导KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>创建了一个信的项目后，通常的任务是通过编辑已创建
的资源及加入类classes <indexterm remap="idx"><primary>classes</primary></indexterm>，pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>，图片及其他任何你的项目需要的东西来扩展项
目。现在，编辑一个项目意味着你可以在一个项目生成后根据你的需要，通过菜单及对话来
改变缺省项目。因此下一节将叙述如何加入已有文件和类classes <indexterm remap="idx"><primary>classes</primary></indexterm>以及如何创建新的文
件。在建立你的项目时需要这个，但这对你的终端用户的安装过程不会有所帮助。因此，<link linkend="Setting-Project-File-Options">设置项目文件选项</link>一节描述了如何设置文件
属性，尤其是你想要安装的其他文件，例如文档或pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>。项目包含的另一个部分是
为应用加入翻译以支持项目的国际化，在<link linkend="Adding-Translations"> 加入翻译</link>中有所叙述。</para>

<para><link linkend="Extending-the-Project-Documentation">扩展项目文件</link>
包含了关于如何创建一套好的使终端用户在遇到问题时能够进行自我帮助的在线帮助及如何
使用你的产品的问题。
最后, <link linkend="Project-Hacking">项目改动</link>将描述你可以如何在特殊情况下进行
Kdevelop项目管理。</para>

<sect2 id="adding-files-and-classes">
<title>增加/去除文件和类</title>

<para>增加新文件在你想分割你的类的实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm> 文档到多个文件时常常用到。然
后你需要创建一个包含了你要去除的类的部分的实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>的新文件。你可以
通过从文件菜单"File"-menu <indexterm remap="idx"><primary>"File"-menu</primary></indexterm>中选择"新建", 打开"新文件New File <indexterm remap="idx"><primary>New File</primary></indexterm>"对话来完成。这
使你可以指定文件类型, 名称及位置。当键入文件名时, Kdevelop会自动为你输入扩展名, 但
你仍然可以根据你的参数选择改变扩展名。此外, 你可以包含源文件的头部模板, 这样你就
无须亲自将它拷贝到你的新文件了。而且, 你可以决定文件是否包含于项目中。注意，这并
不包含安装目的地；它必须通过设置文件参数来设置。</para>

<para>在新文件创建以后, 项目文件及相关的Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>将更新。要把一个完整的类加入你
的项目中, 你可以从项目菜单中选择"新的类New Class <indexterm remap="idx"><primary>New Class</primary></indexterm>"，激活类生成器创建一个新的
类。</para>

<para>万一你有一个已存在的项目并想加入某些想在你的项目再次使用的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>，可从项
目菜单"Project"-menu <indexterm remap="idx"><primary>"Project"-menu</primary></indexterm>选择"将文件加入项目。。。"。选择"加入已有文件"，这会打开一
个对话让你指定要加入项目的文件及目的目录。注意，文件将被拷贝到指定目录中并加入项
目。你应该在增加资源后调用"Make"，然后你加入的文件将被包含到建立程序。万一你想
加入，例如必须由终端用户安装的pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>，你应该为增加的文件更新文件属性并指定
安装路径(参见<link linkend="Setting-Project-File-Options">Setting Project File Options</link>)</para>

<para>要将一个文件加入已存在于项目目录内的项目，请使用RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>，这里所有包含的项目文
件都通过其项目状态在文件图标上有红色！显示。选择你想要加入项目的文件(它有一个标
准的文件图标)并按下鼠标右键以显示弹出菜单。然后选择"加入"。
文件也可从你的项目去除。在你不需要使用预先生成已由KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>给定的文件时你
可能会需要它。要去除一个文件, 你可以选择从一个项目中去除文件或是完全删除。要从项
目中去除一个文件, 请在LFV <indexterm remap="idx"><primary>LFV</primary></indexterm> 或RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>中选择文件, 按下鼠标右键并选择"去除"。
要删除一个文件, 请选择"物理删除"。</para>
</sect2>

<sect2 id="setting-project-file-options">
<title>设置项目文件选项</title>

<para>文件属性对话可以通过项目目录或在LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>上鼠标右击进入。它以在LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>中的分组
显示项目文件并显示文件属性，例如文件大小, 文件类型，文件是否包含在项目中及安装路
径--如果文件将由终端用户的安装命令安装。对于文档文件及pixmaps <indexterm remap="idx"><primary>pixmaps</primary></indexterm>在项目创建并由
终端用户安装时指定文件将去的位置很重要, 因此你必须设置那些定位。对于标准
KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 定位宏你应该查看你的Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>，它指定了你的定位宏。</para>
</sect2>

<sect2 id="adding-translations">
<title>加入翻译</title>

<para>由于KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>允许配置你的桌面及你的应用的行为, 你还可以选择你的应用使用的语言，
考虑到在线文档的使用及应用的外观。对于文档文件,这看起来象一个琐细的工作。你将加
入一个由所希望使用的语言标注的子目录，例如德语的<literal remap="tt">de</literal> German, 到你的项目的<literal remap="tt">docs</literal>
目录并拷贝英文文档到那个目录。然后你将生成整个文档并设置安装目录的所有项目文件的
选项。接着你可开始翻译SGML <indexterm remap="idx"><primary>SGML</primary></indexterm> 文件到你想使用的语言并重新生成这个文档；这样你
就完成了。
对于应用, 这对于程序员好象有点困难。现在, 我们想解释如何使你的应用得到国际化支持
及如何加入你想要支持的语言。
首先，你必须由<literal remap="tt">i18n <indexterm remap="idx"><primary>i18n</primary></indexterm>()</literal> 宏附上出现在你项目的控制条及对话中的可见字符串。这
个宏是Klocale类的<literal remap="tt">klocale-&gt;translate()</literal>函数的替代，更易于使用。由于这个宏是在<literal remap="tt">kapp.h</literal>
文件中声明, 你必须将<literal remap="tt">&&num;;include &&lt;;kapp.h&&gt;;</literal> 加入资源文件或使用了宏的类的类声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>文件。还应该提到的是，虽然<literal remap="tt">i18n <indexterm remap="idx"><primary>i18n</primary></indexterm>()</literal> 是一个宏，而你会考虑使用原
始函数，但这行不通。因为设置来翻译的字符串必须从资源读出并存储在应用的翻译文件内
(&&lt;;YourApp&&gt;;.pot in the /posubdirectory)。这个任务是由程序xgettext完成的，要这样做，
你必须在你的包含了这个资源的项目目录中键入<literal remap="tt">make messages <indexterm remap="idx"><primary>messages</primary></indexterm></literal>。由于xgettext 依靠
<literal remap="tt">i18n <indexterm remap="idx"><primary>i18n</primary></indexterm>()</literal>宏，原始的函数不能完成这个工作。</para>

<para>对于翻译本身，你首先必须使用 <literal remap="tt">i18n <indexterm remap="idx"><primary>i18n</primary></indexterm>()</literal>宏来创建包含了所有用于你的资源内的字
符串的消息文件。这可以通过从建立菜单中选择"Make messages <indexterm remap="idx"><primary>messages</primary></indexterm> and merge" 来完成。
然后你必须加入你的应用希望支持的语言。因此，从想菜单中选择"加入翻译文件"。这会打
开一个语言选择对话。选好语言并按下确定。这将建造ASCII文件包含了文件名的条目entries
for the filename of the string and the line where the original string is placed. 然后你会看见一个包
含了要翻译的字符串的<literal remap="tt">msgid</literal>行，其后是<literal remap="tt">msgstr</literal>。Msgstr行大多是空的，除了已由KDE
库KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>提供的翻译。它们必须填充你的语言的相关翻译。</para>

<para>你可以考虑用手书写翻译，这样也可以。但是KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm> 提供用户KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>程
序，它从安装在系统上的其他程序读出已有文件，这样你可以重新使用已翻译的字符串以支
持你的语言。</para>

<para>要进入KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>，最简单的方法是在LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>或RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>内选择一个/po 目录内的
&&lt;;language&&gt;;.po文件。这会打开KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm> 并允许轻易的完成翻译。注意，你必须
由你自己设置 KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>属性以包含作者名字，语言及目的文件。缺省情况下
KTranslator <indexterm remap="idx"><primary>KTranslator</primary></indexterm>只打开你的翻译文件。
对于所有有的"文件，<literal remap="tt">make <indexterm remap="idx"><primary>make</primary></indexterm></literal> 使用<literal remap="tt">msgfmt</literal> 程序来格式化你的信息文件以使用二
进制，但是你无须操心这一点以及指定安装翻译文件的目标目录；这是由Kdevelop自动完成。</para>

<para>要得到关于国际化支持的详细信息，请参见<ulink url="http://www.kde.org">\|\|</ulink>；很多人在为你翻
译以支持他们的语言。你会发现一个翻译人员的email地址列表，你可以写信给他们，他们
可以帮助你。还可以阅读<link linkend="The-Dialog-Editor">对话框编辑器</link>及<ulink url="programming/index-11.html">Kdevelop编程手册</ulink>，在这里再
次谈到了关于国际化的问题。</para>
</sect2>

<sect2 id="extending-the-project-documentation">
<title>扩展项目文件</title>

<para>所有Kdevelop创建的项目都包含了一个预先设置的文件，它已经包含了安装的标准章节，项
目名称，版本以及作者名和email地址。由于Kdevelop使用的是SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>-模板，把文件扩
展为完整描述的帮助系统十分容易。你唯一必须完成的事是编辑SGML <indexterm remap="idx"><primary>SGML</primary></indexterm> 文件，它作为
index.sgml放于docs/en中。你的sgml-工具包包含的参考文件可以加入帮助浏览器
Helpbrowser <indexterm remap="idx"><primary>Helpbrowser</primary></indexterm>，允许你直接进入特殊标签及关于如何扩展文档的简短描述。SGML <indexterm remap="idx"><primary>SGML</primary></indexterm>
有很多优点，而KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>利用其他的KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm>工具通过文件类型广泛使用。这会
创建典型的KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>-风格的文件并让它看上去更好。不管怎么说，sgml工具本身就已经足
够产生一个已包含于你的项目的html输出output <indexterm remap="idx"><primary>output</primary></indexterm>。要使用KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm>创建文件，
先安装工具并从建立菜单运行"生成用户手册"。文件浏览器允许通过从帮助菜单或文件树
DOC <indexterm remap="idx"><primary>DOC</primary></indexterm>-tree的相关按钮选择"项目用户手册"来直接控制输出output <indexterm remap="idx"><primary>output</primary></indexterm>。然后你可以在
KDevelop中浏览在线文件，更好的通过输出output <indexterm remap="idx"><primary>output</primary></indexterm>浏览导致标签丢失的错误
errors <indexterm remap="idx"><primary>errors</primary></indexterm>。</para>

<para>现在，在展开文档时，你无可避免的会生成一些必须包含于项目的其他文件，由于每个
<literal remap="tt">sect</literal>-tag 都创建一个新的HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>文件。由应用向导KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>生成的输出
output <indexterm remap="idx"><primary>output</primary></indexterm>已包含于项目文件，因此你无须操心它们的安装路径。你真正需要关心的是任何
的index-xx.html文件，xx是大于6的数字(由于前6页已经包含在项目中)。在生成了文档以后，
切换到RFV <indexterm remap="idx"><primary>RFV</primary></indexterm>并浏览你的文件目录。在文件上按下鼠标右键并选择"增加"。另外，
KSgml2Html <indexterm remap="idx"><primary>KSgml2Html</primary></indexterm> 将KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> logo加入文件目录。这个文件，<literal remap="tt">logotp3.gif</literal>，也必须加入
项目。然后你必须从项目菜单或通过文件浏览器的弹出菜单选择"文件属性"。设置安装路径
最简单的办法是选择一个已经设置好安装的文档文件，例如<literal remap="tt">index.html</literal>。你可以看见
<literal remap="tt">Install</literal>已监测安装目录及文件名也已包含了目的地。标注安装目录并键入CTRL+C以拷贝
安装路径到剪贴板。接着选择你指定要安装的文件。激活<literal remap="tt">Install</literal>，这将激活安装目录入
口域，已包含了文件名。将光标置于文件名之前并键入CTRL+V以插入剪贴板上的内容 (这
是起先拷贝的安装路径)。这是指定安装路径最快的方法。要得到关于指定安装目的地的更
多选项，请参见<ulink url="programming/index-14.html">KDevelop 编程手册</ulink>。</para>
</sect2>

<sect2 id="project-hacking">
<title>项目改动</title>

<para>当着手于一个项目时，你决不应该手动的编辑项目文件。在一定情况下这会阻止Kdevelop正
确装载你的项目，而且改变也不会使Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s更新。要改变你的项目的任何设置，你
必须使用给定的工具条目，例如，增加文件或设置文件属性的条目。对于不习惯某些设置的
专家，例如连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> 或需要其他项目设置，你应该研究一下Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm> 的
宏并在以"Kdevelop写区域"条目分割的部分之后将所有改动加入Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>'s。由于
GNU-工具是在所有宏文件的末尾使用这些命令，你可以用它覆写Kdevelop的设置。注意，
这会阻止使用KDevelop 进行与项目设置相关的任何改动。</para>
</sect2>
</sect1>

<sect1 id="index-102">
<title>项目的编译和连接选项</title>

<para>每一个新项目都包含了编译Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>和连接Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>需要的所有选项及一般设置。
缺省情况下，你的项目设置为通过-g标志使用编译debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>，警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>也设
置为标准型，-Wall。这保证你可以调试你的应用并监测可能导致程序错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>的建造。
对于有些应用。你会需要其他的编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> 或连接Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> 标志，尤其是当
你使用当前并不包含于连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>的库时。然后你需要通过使用项目选项对话来正
确配置以更新项目。参见<link linkend="Build-Settings">建立设置</link>以获得更多关于如何
及在何处设置编译器选项，警告及连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>选项。</para>
</sect1>

<sect1 id="index-103">
<title>外部项目</title>

<para>已有项目可通过从项目菜单中选择"新建"转换为KDevelop项目。以下对话用你的项目名，版
本，类型信息以及你的名字和email地址创建了一个空的项目文件。然后拷贝你所有的编译
及建造文件到新项目的目录并从项目菜单中选择"增加文件"。选中的文件将被拷贝到你的项
目目录中，Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>也会更新。请改变所有转变前存在的Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>入口为由
Kdevelop在Kdevelop区域新建的入口。测试一下在转换后你的项目是否仍然可以编译及安装
以保证项目的稳定性。</para>
</sect1>
</chapter>

<chapter id="build-settings">
<title>建立设置</title>

<para>项目选项对话可通过项目菜单进入，它允许你指定所有你的项目需要的参数。它们将用于
Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>'s及configure <indexterm remap="idx"><primary>configure</primary></indexterm>.in 脚本(例如，版本号改变及编译器警告compiler
warnings <indexterm remap="idx"><primary>compiler
warnings</primary></indexterm> )，因此也设置编译参数。在改变了项目选项后，你应该激活"清除make <indexterm remap="idx"><primary>make</primary></indexterm> clean"
或"全部重建"以使用新选项来编译你的项目。请注意，调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm> 只有在设置了项
目选项以生成调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>信息时才可用，可通过调试等级 (0-3)设置数量。如果你
在连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>标志中加入了属于未包含的库的信息，而它们都未更新，则你的程序
不会正常连接，因此应该记录你的二进制连接。</para>

<para>为生成你的应用的发布或为发布源代码包, 你应该检查以下标准设置：
<itemizedlist>
<listitem>
<para>使编译debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>失效</para>
</listitem>
<listitem>
<para>允许优化并设置优化级别为<emphasis remap="bf">-02</emphasis></para>
</listitem>
<listitem>
<para>设置编译器警告compiler warnings <indexterm remap="idx"><primary>compiler warnings</primary></indexterm> 为<emphasis remap="bf">-Wall</emphasis></para>
</listitem>
<listitem>
<para>对每个新发布的软件, 为了版本和需求升级版本号并更新项目文件</para>
</listitem>
</itemizedlist>
</para>

<sect1 id="index-105">
<title>一般选项</title>

<para>项目选项对话的第一页为你的项目设置一般选项。即项目名号码，手册中用于生成一套包含
于项目的HTML <indexterm remap="idx"><primary>HTML</primary></indexterm> 文件的sgml文件及关于作者的具体信息。简短描述区域可输入你想要
包括的其他信息，如程序的目的等。</para>
</sect1>

<sect1 id="compiler-options">
<title>编译器选项</title>

<para>编译器选项compiler options <indexterm remap="idx"><primary>compiler options</primary></indexterm> 页给你的目标设置编译器标志, 调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>及其
他。</para>

<sect2 id="index-107">
<title>目标</title>

<para>目标格包含了三个可设置的选项:</para>

<para>目标机器: 你可以在此通过在你的机器（缺省）和i386v之间作出选择来设置目标选项,如果
你把你的编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>设置configure <indexterm remap="idx"><primary>configure</primary></indexterm>d为一个运行V系统的Intel 386-兼容机器的
交叉编译器，可选择此项。这一选项把-b标志设置到编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>。通常，这一项
保留缺省值。</para>

<para>只做语法检查: 选中后, 会设置只做语法检查标志。这意味着编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>将只检查
你的代码的语法正误, 但并不检查此外的其他项目。</para>

<para>优化: 你可以通过这个选项允许优化建立过程, 意味着设置-O标志。如果未选中, 标志将设
为-O0, 这样就不会使用任何优化。如果你通过选择此选项允许优化, 你也可以在其下从1到
3指定优化级别。</para>

<para>对于你的应用的发布版, 应允许优化并将标准设置为2。</para>
</sect2>

<sect2 id="index-108">
<title>调试</title>

<para>在目标方框的右方，你可以看见调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>-选区。这意味着你可以设置你的编译器
Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>以在最终二进制内包含调试信息, 这样程序员就可以跟随应用的执行，并随调
试器直接看到资源代码上下文。</para>

<para>因此激活调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm> 设置 -g 标志；调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm> 标准指定包含于二进制
的信息量。可选择1到3级。注意二进制的执行可以通过设置任何调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>选项减
慢，二进制文件大小则通过调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>标准增大。</para>

<para>生成gprof的额外信息: 设置-pg标志, 这将导致编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> 包含展示你程序功能的
调用图表的gprof程序的信息。</para>

<para>存储临时交互文件: 设置-保存-临时文件 标志。这将导致存储通常由预处理器及集成器产生
的的临时文件。因此，源文件的编译将产生三个输出output <indexterm remap="idx"><primary>output</primary></indexterm>文件: 一个 *.o 文件，它是
编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>的最终输出output <indexterm remap="idx"><primary>output</primary></indexterm>, 一个由预处理器产生的*.i 文件及一个作为集
成器输出output <indexterm remap="idx"><primary>output</primary></indexterm>的*.s文件。</para>

<para>要发布你的项目, 请使任何调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>可用。</para>
</sect2>

<sect2 id="index-109">
<title>其他选项</title>

<para>底部的文本条目区域旨在通过在Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s里设置CXXFLAGS环境variable <indexterm remap="idx"><primary>variable</primary></indexterm>来手动
的设置任何编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>标志, 因此应该在建立过程之前设置标志并在其后对它们重
启。要得到所有可用的编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>标志的完整描述请参见你的编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>
文档；对于gcc 和 egcs，这可由<emphasis remap="bf">man gcc</emphasis>来完成；<emphasis remap="bf">man g++</emphasis>会告诉你关于用于指挥
编译Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>的c++脚本的信息。</para>
</sect2>
</sect1>

<sect1 id="compiler-warnings">
<title>编译器警告</title>

<para>以下将描述关于可以在项目选项对话第三页进行设置的编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm> 警告选项。说
明取自GCC页, egcs1.1.1.版。警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>本身是诊断信息，表明创建可能引起错误
errors <indexterm remap="idx"><primary>errors</primary></indexterm>。
<variablelist>
<varlistentry>
<term>-Wall</term>
<listitem>
<para>综合的标准的`-W'选项。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-W</term>
<listitem>
<para>用-W编译。这已选项设置了不时很特殊的未包含在-Wall中的选项。请阅读GCC-Info
以获得更多信息。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wtraditional</term>
<listitem>
<para>警告在传统或标准ANSI C中表现不同的某种构造。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wundef</term>
<listitem>
<para>在一个未定义标识在一个`&&num;;if'指令中作出评价时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wshadow</term>
<listitem>
<para>无论何时当本地变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>隐蔽了另一个本地变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>时警
告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wid-clash-LEN</term>
<listitem>
<para>无论何时当两个不同标识符在第一个len字符匹配时警告。这可以帮助
你准备一个将由一定编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>s程序编译的程序。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wlarger-then-LEN</term>
<listitem>
<para>无论何时当一个比LEN字节长的对象被定义时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wpointer-arith</term>
<listitem>
<para>警告依靠一个函数类型或空的大小的任何事物。GNU C给这些类型大小
赋值为1，为方便计算使用void * 空指针及函数指针。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wbad-function-cast</term>
<listitem>
<para>无论何时当一个函数调用是用于一个不匹配类型时警告。例如，当
<literal remap="tt">int malloc()</literal> 用于<literal remap="tt">anything *.</literal>时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wcast-equal</term>
<listitem>
<para>无论何时当投出一个指针以从目标类型去除一个类型限定时警告。例如，
在一个const char *投向一个普通的char *时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wcast-align</term>
<listitem>
<para>无论何时当投出一个指针以使目标所要求的队列增加时警告。例如，当一
个char * 投向一个在整型只有在2或4个字节限定时才能访问的机器上的int *时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wwrite-strings</term>
<listitem>
<para>赋予字符串常量予char&&lsqb;;length]常量类型，这样拷贝其一的地址到一个非
常量的字符*指针时会得到警告。这些警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>将帮助你找到一个编译时间代码，
它可以尽力写入一个字符串常量，但只有当你在声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>s 及原型中使用常量时
十分仔细才可。否则，它就只是一个损害；这就是我们没有让`-Wall'请求这些警告
warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>的原因。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wconversion</term>
<listitem>
<para>当一个原型引起一个不同于没有原型时发生于同一argument的类型转换时
警告。这包含定点转换为浮点，反之亦然，及改变定点数范围和有无符号的转换，除了和缺
省的晋级一样时。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wsign-compare</term>
<listitem>
<para>当有符号数转变为无符号数，而有符号和无符号的值的对比将产生一
个不正确的结果时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Waggregate-return</term>
<listitem>
<para>当返回结构或联合的任何函数被定义或调用时警告。(在可以返回队
列的语言中，这也会引起警告。)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wmissing-prototypes</term>
<listitem>
<para>如果一个全局函数定义却没有前面的原型声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>时
警告。即使定义本身提纲了原型这个警告也将发出。其目的是监测头文件中未声明的全局函
数。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wmissing-declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>s</term>
<listitem>
<para>当全局函数没有先声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>就定义时警告，即
使定义本身提供了原型。使用这一选项来监测头文件中未声明的全局函数。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wredundant-decls</term>
<listitem>
<para>当某种事物在同一范围内的声明了超过一次时警告，即使是在多声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>有效且没有改动的地方。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wnested-externs</term>
<listitem>
<para>如果一个外部声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>在一个函数中遇到时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Winline</term>
<listitem>
<para>如果一个函数不能内联，而它要么声明为内部，要么给出-fin*line-functions选
项时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wold-style-cast</term>
<listitem>
<para>如果一个老风格(C-风格)调用用于次序时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Woverloaded-virtual</term>
<listitem>
<para>(C++ only.) 在一个派生类中，虚拟函数的定义必须匹配在基本类
中声明的虚拟类的签名类型。当一个派生类声明一个可能是一个定义虚拟函数的错误尝试的
函数时，使用此选项来请求警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>；也就是说，有和一个基本类中虚拟函数同
名的函数，但有一个不匹配任何基类中虚拟函数的类型签名时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-Wsynth</term>
<listitem>
<para>当g++综合行为不匹配c前端时警告。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>make all warnings <indexterm remap="idx"><primary>warnings</primary></indexterm> into errors <indexterm remap="idx"><primary>errors</primary></indexterm></term>
<listitem>
<para>(-Werror) 把警告warnings <indexterm remap="idx"><primary>warnings</primary></indexterm>看作错误
errors <indexterm remap="idx"><primary>errors</primary></indexterm>；在任何警告后退出编译。</para>
</listitem>
</varlistentry>
</variablelist>
</para>

<para>要发布你的项目, 推荐使<emphasis remap="bf">-Wall</emphasis>可用。</para>
</sect1>

<sect1 id="linker-options">
<title>连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> 选项</title>

<para>连接器选项<indexterm><primary>linker options</primary></indexterm>
你当前项目的连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>选项可以通过项目选项对话的最后一页设置。你必须激活
那些你的应用中用于利用连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>将它们连接到二进制文件的库，例如，你的应
用使用类文件对话<indexterm remap="cdx"><primary><literal>KFileDialog</literal></primary></indexterm>KFileDialog。由于类文件对话<indexterm remap="cdx"><primary><literal>KFileDialog</literal></primary></indexterm>KFileDialog是Kfile库的一部分，
你必须激活kfile。对于checkboxes中未列出的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>或函数，可使用其他库
<emphasis remap="bf">"additional libraries"</emphasis>域。</para>

<sect2 id="linker-linker-flags">
<title>连接器标志Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> Flags</title>

<para>连接器标志<indexterm><primary>linker flags</primary></indexterm>
<variablelist>
<varlistentry>
<term>remove all symbol table and relocation information from the executable:</term>
<listitem>
<para>这意味着所有多余
的信息都将从项目文件及二进制文件中去除，并导致无法调试debugging <indexterm remap="idx"><primary>debugging</primary></indexterm>。只要你的应
用是处于开发阶段，不是作为最终的发布，你应该让这个选项无效。</para>
<para>阻止使用共享库</para>
</listitem>
</varlistentry>
<varlistentry>
<term>prevent using shared libraries:</term>
<listitem>
<para>这一选项使使用在支持它的机器内的共享
库无效。在不使用共享库的系统上，这一选项无效。</para>
<para>其他标志</para>
</listitem>
</varlistentry>
<varlistentry>
<term>additional flags:</term>
<listitem>
<para>在此，你可以为连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>键入另外的标志，通过
make <indexterm remap="idx"><primary>make</primary></indexterm>设置LDFLAGS 环境变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>。变量选项可以从<emphasis remap="bf">ld</emphasis>页或你的编译器
Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>页中得到。</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>

<sect2 id="index-111">
<title>库</title>

<para>库这节包含最需要的库的checkboxes连同Qt/KDE <indexterm remap="idx"><primary>KDE</primary></indexterm>应用开发。你必须激活那些你的应用
要使用的库，否则连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>会抱怨未定义的代号表格。
<variablelist>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>X11</literal></primary></indexterm>X11</term>
<listitem>
<para>The X11 library. 对于所有X-Window程序推荐使用。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>Xext</literal></primary></indexterm>Xext</term>
<listitem>
<para>The X11 extension library. 同样大多数X-Window 程序要依靠Xext。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>qt</literal></primary></indexterm>qt</term>
<listitem>
<para>The Qt-library <indexterm remap="idx"><primary>Qt-library</primary></indexterm>. 推荐Qt及KDE <indexterm remap="idx"><primary>KDE</primary></indexterm> 应用使用。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kdecore</literal></primary></indexterm>kdecore</term>
<listitem>
<para>KDE核心库，包含类KDE应用框架的classes <indexterm remap="idx"><primary>classes</primary></indexterm>。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kdeui</literal></primary></indexterm>kdeui</term>
<listitem>
<para>KDE用户界面库；包含KDE-特殊控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>khtmlw</literal></primary></indexterm>khtmlw</term>
<listitem>
<para>KHTML控件库。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kfm</literal></primary></indexterm>kfm</term>
<listitem>
<para>KFM库，包含KFM函数的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kfile</literal></primary></indexterm>kfile</term>
<listitem>
<para>KFile 库；包含文件对话等。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kspell</literal></primary></indexterm>kspell</term>
<listitem>
<para>Kspell库；包含让程序为检查拼写使用Ispell的界面。</para>
</listitem>
</varlistentry>
<varlistentry>
<term><indexterm remap="cdx"><primary><literal>kab</literal></primary></indexterm>kab</term>
<listitem>
<para>KadressBook库。访问地址薄及提供地址薄控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>时需要。</para>
</listitem>
</varlistentry>
</variablelist>

<emphasis remap="bf">additional libraries:</emphasis> 在此你可以输入你的应用需要的其他的库；例如KOM库。用-l选项
设置库，例如-lkom。</para>
</sect2>

<sect2 id="make-0">
<title>Make</title>

<para>由于GNU make <indexterm remap="idx"><primary>make</primary></indexterm>支持一些有用的选项，项目选项对话包含了一个叫做"Make-Options"的
页面，在此它们可以设置为可用/不可用。可用设置为：
<variablelist>
<varlistentry>
<term></term>
<listitem>
<para>打印调试信息</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Print debug information</term>
<listitem>
<para>打印出所有关于项目文件project files <indexterm remap="idx"><primary>project files</primary></indexterm>的信息
和make <indexterm remap="idx"><primary>make</primary></indexterm> 重建它们时的测定。
错误后继续</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Continue after errors <indexterm remap="idx"><primary>errors</primary></indexterm></term>
<listitem>
<para>尽量在错误发生后继续编译(例如一个文件由于某
个错误不能编译)
打印数据库</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Print the data base</term>
<listitem>
<para>打印出包含了上次运行建立后的当前过程的数据库
make <indexterm remap="idx"><primary>make</primary></indexterm>-database。
环境变量</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Environment variables</term>
<listitem>
<para>给当前环境变量一个比当前在Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s中使用的
变量更高的优先级。
没有内置规则</para>
</listitem>
</varlistentry>
<varlistentry>
<term>No built-in rules</term>
<listitem>
<para>不使用make <indexterm remap="idx"><primary>make</primary></indexterm>的内置程序。</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Touch files</term>
<listitem>
<para>不在改动的文件上运行编译器Compiler <indexterm remap="idx"><primary>Compiler</primary></indexterm>；而只接触它们。这将它们设
置为已由make <indexterm remap="idx"><primary>make</primary></indexterm>处理。
忽略所有错误</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Ignore all errors <indexterm remap="idx"><primary>errors</primary></indexterm></term>
<listitem>
<para>忽略发生的所有错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>
静态操作</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Silent operation</term>
<listitem>
<para>不打印处关于建立过程的任何信息
打印工作目录</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Print working directory</term>
<listitem>
<para>打印make <indexterm remap="idx"><primary>make</primary></indexterm>-过程中的当前目录
工作成员</para>
</listitem>
</varlistentry>
<varlistentry>
<term>job number</term>
<listitem>
<para>为make <indexterm remap="idx"><primary>make</primary></indexterm>设置相似程序量。对于一个单CPU系统，我们推荐将
此设置为1或2
设置修改</para>
</listitem>
</varlistentry>
<varlistentry>
<term>set modified</term>
<listitem>
<para>设置选中的修改文件。通过单击右边的文件夹按钮选择文件。将
一个文件设置为改动意味着该文件将由make <indexterm remap="idx"><primary>make</primary></indexterm>处理和编译，如果它是一个资源文件。
其他选项</para>
</listitem>
</varlistentry>
<varlistentry>
<term>additional options</term>
<listitem>
<para>设置其他选项到make <indexterm remap="idx"><primary>make</primary></indexterm>；它们可以在你本地发页面中为
"GNU Make"找到。</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect2>
</sect1>

<sect1 id="make-options">
<title>Make <indexterm remap="idx"><primary>Make</primary></indexterm>选项</title>

<para>正如GNU make <indexterm remap="idx"><primary>make</primary></indexterm> 支持许多有用的选项一样,在项目选项对话框中有一页叫"连编选项",
你可以选择要使用的选项.可用的设置有:</para>

<para><variablelist>
<varlistentry>
<term>打印调试信息</term>
<listitem>
<para>打印关于项目文件以及为什么重建的所有信息.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>发生错误后继续</term>
<listitem>
<para>在错误发生后(比如某文件由于错误无法成功编译)将试图继续编译.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>打印数据库</term>
<listitem>
<para>打印当前进程自上次建立以来变化的数据库.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>环境变量</term>
<listitem>
<para>让环境变量值优先于Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s中的变量.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>无内建规则</term>
<listitem>
<para>不使用make <indexterm remap="idx"><primary>make</primary></indexterm>的内建规则.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>更新文件修改日期</term>
<listitem>
<para>不编译改变的文件;只是改变其修改日期.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>忽略所有错误errors <indexterm remap="idx"><primary>errors</primary></indexterm></term>
<listitem>
<para>忽略所有的发生错误errors <indexterm remap="idx"><primary>errors</primary></indexterm>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>安静操作</term>
<listitem>
<para>不打印在编译连接过程中的任何信息.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>打印工作目录</term>
<listitem>
<para>在make <indexterm remap="idx"><primary>make</primary></indexterm>过程中打印出工作目录.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>任务数</term>
<listitem>
<para>设置并发make <indexterm remap="idx"><primary>make</primary></indexterm>进程的总数.对一个单处理器系统,我们推荐将起设为1或2.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>设为已更改</term>
<listitem>
<para>把选择的文件设置成已更改过.按右边文件夹按钮以选择文件.设置一个
文件为已更改意味着,如果它是源文件将由make <indexterm remap="idx"><primary>make</primary></indexterm>强制处理和编译.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>设置附加选项</term>
<listitem>
<para>为make <indexterm remap="idx"><primary>make</primary></indexterm>设置附加的选项;那些选项可以在你本地的man page中找到.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>运行时的重建行为</term>
<listitem>
<para>设置你在选择运行时发生什么动作.你可以有三种选择:
<itemizedlist>
<listitem>
<para>总是重建: 不检查更改的文件而总是重建.</para>
</listitem>
<listitem>
<para>更改时警告: 如果源文件已经更改则发出警告并询问是否重建项目.</para>
</listitem>
<listitem>
<para>仅在更改时: 检查是否有源文件已更改并重建更改过的文件.</para>
</listitem>
</itemizedlist>

缺省的是总是重建.</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</sect1>
</chapter>

<chapter id="the-class-browser">
<title>类浏览器</title>

<sect1 id="index-113">
<title>类浏览器</title>

<para>类浏览器<indexterm><primary>classbrowser</primary></indexterm>
Kdevelop的类浏览器是IDE提供给开发者管理他的项目资源最有用和最重要的工具之一。当
一个项目装载后，一个类语法分析器将读出函数，类classes <indexterm remap="idx"><primary>classes</primary></indexterm>等的所有项目资源，然后
加工结果显示在CV <indexterm remap="idx"><primary>CV</primary></indexterm> 树视图中。本章为你展示如何使用类浏览器和它提供的功能及它
是如何改善你的工作的。
类及其方法也可通过浏览器工具条访问。在那里，左边的combo选择类，右边的让你选择选
中的类的方法。当你选择了一个方法，类浏览器会自动把你带到实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>文
件并将光标置于方法中。最后，点击方法combo右边的类辅助按钮后它会带你到方法的声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>处；再单击定义。随后的弹出菜单---由按钮上的向下箭头显示---会提供其他
的在类浏览器上下文菜单中可用的功能，例如：</para>

<para><itemizedlist>
<listitem>
<para>到声明处：浏览方法的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm></para>
</listitem>
<listitem>
<para>到定义处：浏览方法的定义</para>
</listitem>
<listitem>
<para>到类声明处：浏览类的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm></para>
</listitem>
<listitem>
<para>新的类New Class <indexterm remap="idx"><primary>New Class</primary></indexterm>：打开新类New Class <indexterm remap="idx"><primary>New Class</primary></indexterm> 对话以构造新类</para>
</listitem>
<listitem>
<para>加入方法：增加一个方法到选中的类</para>
</listitem>
<listitem>
<para>增加属性：增加一个属性到选中的类</para>
</listitem>
</itemizedlist>
</para>

<sect2 id="index-114">
<title>可用对象</title>

<para>通过可用对象，我们描述了一个术语，意味着C++代码可以看作一个对象类classes <indexterm remap="idx"><primary>classes</primary></indexterm>的集
合，它们的成员，全局函数等。类树逻辑的显示这些对象并通过特征排序，因此它们在树中
很容易定位。所以类书包含了一个"Classes" 和一个"Globals"文件夹。这样"Classes"文件夹
一般包含项目的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>；如果你的包含了子文件夹以管理你的资源文件，它们也通
过其原始文件夹名称显示并包含存储在为于子文件夹的文件中的所有类classes <indexterm remap="idx"><primary>classes</primary></indexterm>。</para>

<para>此外，当弹出一个类，类树将通过分隔方法和属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>显示类的内容。由于这些
也可以有属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>如公有，私有和保护，它们也可以通过标识过的按钮显示。你
可以看见类浏览器中显示的一个类包含了出现在类声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>中的所有对象。</para>

<para>现在，在用C++编程时，类classes <indexterm remap="idx"><primary>classes</primary></indexterm>是一个很普通的事物，也将包含大多数代码。但是应
用也包含在项目中有"全局"外观的对象。这些可能时结构体或函数等。尤其<literal remap="tt">main()</literal>函数
在每个应用中都出现，有时你需要以某种方式修改它。要访问这些对象，类浏览器提供了"
全局" 文件夹，包含了以下对象类型的子文件夹：
<itemizedlist>
<listitem>
<para>结构体</para>
</listitem>
<listitem>
<para>函数</para>
</listitem>
<listitem>
<para>变量</para>
</listitem>
</itemizedlist>
</para>

<para>由于显示这些项目的按钮与那些用于类浏览器的相似，它们的意思很容易被程序人员猜到和
记住。</para>

<para>最后，可以说类浏览器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>是通过在代码中与其外观相关的对象用图表法显示
你的项目。以下将连同你的代码教你如何使用类浏览器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>及其工具。</para>
</sect2>

<sect2 id="index-115">
<title>浏览对象声明及实现</title>

<para>类浏览器最强的功能是通过代码的上下文提供其代码的快速访问而不管在文件中的位置。因
此，鼠标点击选取将导致以下操作：</para>

<para><itemizedlist>
<listitem>
<para>类名<emphasis remap="bf">On a classname:</emphasis>  切换到类声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>处</para>
</listitem>
<listitem>
<para>类方法<emphasis remap="bf">On a class method:</emphasis> 切换到方法实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>处</para>
</listitem>
<listitem>
<para>类属性<emphasis remap="bf">On a class attribute:</emphasis> 切换到类声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>中的属性声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>处</para>
</listitem>
<listitem>
<para>结构体<emphasis remap="bf">On a struct:</emphasis> 切换到结构体声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>处</para>
</listitem>
<listitem>
<para>全局函数<emphasis remap="bf">On a global function:</emphasis> 切换到函数的实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>处</para>
</listitem>
</itemizedlist>
</para>

<para>现在，这提供给你对代码对象最需要的访问。显然，它也许需要改变一个方法的头部，这导
致你必须在类中改变它的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>及实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>。类浏览器
classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>通过提供在项目上右击后的出现的上下文菜单来支持它。对于一个方法或
函数，这意味着你可以选择要去的地方：</para>

<para><itemizedlist>
<listitem>
<para>到定义处<emphasis remap="bf">Go to definition:</emphasis> 切换到实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>处--这是左击
时的缺省，如上所述。</para>
</listitem>
<listitem>
<para>到声明处<emphasis remap="bf">Go to declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>:</emphasis> 切换到方法或函数的声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>处。</para>
</listitem>
</itemizedlist>
</para>

<para>通过这一性能, 类浏览器让你可以访问你为编写C++应用必须去的每个地方。</para>

<para>以下将描述类浏览器提供的其他工具，你将发现它们在着手大项目的时候十分有用，因为它
们推崇面向对象的C++编程工作。</para>
</sect2>
</sect1>

<sect1 id="index-116">
<title>类工具</title>

<para>类工具<indexterm><primary>classtools</primary></indexterm>
类工具是让开发者更起义的获得关于他项目的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>的更多信息的对话。类浏览
器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>通过项目在代码中的出现显示所有项目, 但是你有时希望无须深入查
看代码而得到关于类classes <indexterm remap="idx"><primary>classes</primary></indexterm>的更多信息。因此, 类工具对话专门用于显示特定的类
属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>。</para>

<para>类工具对话是通过类浏览器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>中的类上的弹出菜单激活的。选择 "类工具",
对将话出现。要得到某个类的通知, 在顶部的combo框中选择这个类。然后工具条中的按钮
将为你提供你的类的特殊的树的函数。它们是:</para>

<para>双亲</para>
<variablelist>
<varlistentry>
<term> Parents:</term>
<listitem>
<para>选中的类的双亲, 意味着它所继承的类。对于多继承及查看为什么一个的行为很有用, 例如，
对于对话你的双亲类将是<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal> 或 <literal remap="tt"><indexterm remap="cdx"><primary><literal>QDialog</literal></primary></indexterm>QDialog</literal>。
孩子</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Children:</term>
<listitem>
<para>显示继承当前类的孩子类classes <indexterm remap="idx"><primary>classes</primary></indexterm>。
客户</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Clients:</term>
<listitem>
<para>通过类声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>中的属性使用选中类的类。
供应方</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Suppliers:</term>
<listitem>
<para>为选中类提供属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>的供应方。
属性</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Attributes:</term>
<listitem>
<para>通过其名显示的类的属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>。
方法</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Methods:</term>
<listitem>
<para>选中类的方法。
虚拟方法</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Virtual Methods:</term>
<listitem>
<para>一个类提供的虚拟方法。</para>
</listitem>
</varlistentry>
</variablelist>

<para>此外, 选择的属性--公有, 保护, 私有或全部--通过其属性值显示其属性，方法及虚拟方法。</para>
</sect1>

<sect1 id="index-117">
<title>管理类</title>

<para>另外类浏览器允许通过对话直接加入方法和属性attributes <indexterm remap="idx"><primary>attributes</primary></indexterm>。这意味着你无须自己打
出类声明classdeclaration <indexterm remap="idx"><primary>classdeclaration</primary></indexterm>及实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>的头部。在加入一个方法后,
你只需设置实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>头部的形式参数, 如果方法需要一个属性, 加入声明
declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>。</para>

<para><emphasis remap="bf"> 如何为类增加方法</emphasis></para>

<para><orderedlist><listitem>
<para>选择你想要增加方法的类</para>
</listitem>
<listitem>
<para>按下鼠标右键，出现弹出式菜单</para>
</listitem>
<listitem>
<para>选择"增加成员功能"</para>
</listitem>
<listitem>
<para>显示"增加成员功能"对话</para>
</listitem>
<listitem>
<para>插入方法的类型, 申明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm> 及文件</para>
</listitem>
<listitem>
<para>指定方法的通路就修饰字</para>
</listitem>
<listitem>
<para>按下确定以退出对话</para>
</listitem>
</orderedlist>
</para>

<para>要加入一个变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>, 操作是一样的, 只要在弹出菜单中选择"增加变量
variable <indexterm remap="idx"><primary>variable</primary></indexterm>成员"。</para>

<para>这些对话操作的区别是增加一个变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>将把变量variable <indexterm remap="idx"><primary>variable</primary></indexterm>增加到类声明
classdeclaration <indexterm remap="idx"><primary>classdeclaration</primary></indexterm>中,增加一个方法将把方法的声明declaration <indexterm remap="idx"><primary>declaration</primary></indexterm>及方法的实现
implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>头部增加到资源中。由于类浏览器classviewer <indexterm remap="idx"><primary>classviewer</primary></indexterm>直接自我更新,
你可以直接进入新方法的实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>, 因此你只需填写方法的实际目的的代
码。</para>
</sect1>
</chapter>

<chapter id="the-dialog-editor">
<title>对话框编辑器</title>

<para>Kdevelop集成的对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>允许通过图表的方式对控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>
和你的应用使用的对话进行简易创建。你可以直接看见你的对话的外观，就象它为用户显示
的一样。使用对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>通常是你在创建了一个新的项目并用应用向
导KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>创建你的主视，用户交互对话, 和在完成图解工作及代码生成后要完成
的第一步。这样, 你的项目将包含所有通常认为是很"困难"、一般要花很长时间才能实现的
部分。然后, 你剩下的工作就是实现生成的代码中的功能了。本章涉及如何使用对话框编辑器
dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>创建你的项目控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>及当你觉得你的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>
在进一步的开发过程中需要更正或增加时应该如何做。</para>

<para>你可以通过从视图菜单"View <indexterm remap="idx"><primary>View</primary></indexterm>"中选择"对话框编辑器"或通过工具条相关按钮来切换到对
话编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>。要切换回项目编辑器, 可从对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>
的视图菜单中选择"KDevelop""View <indexterm remap="idx"><primary>View</primary></indexterm>"或按下相关工具条按钮。</para>

<para>对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>的界面还为你提供了什么呢?主要来说, 按照主视图的分
割，它的外貌和项目编辑器以及菜单条，工具条几乎一样。这允许你可以很快的习惯对话编
辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>, 而且，由于他完全和项目管理进行交互,如果你想要控制你的建
立过程，你可以一直在对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>里。需要切换回KDevelop的操作将
为你自动完成它, 比如进入文件浏览器。只需选择菜单命令, Kdevelop将如你所愿。</para>

<para>下面的章节总体的介绍了对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>界面, 最初如何创建一个新的对
话及如何设置你的对话包含的孩子控件的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>属性。</para>

<sect1 id="index-119">
<title>对话框编辑器视图</title>

<sect2 id="index-120">
<title>主视</title>

<para>对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>视图逻辑分割为:
<itemizedlist>
<listitem>
<para>控件定位装置, 包含"控件", "对话" 及"项目"制表符。参见<link linkend="Adding-Widgets">添加控件</link>中的描述。</para>
</listitem>
<listitem>
<para>控件编辑器, 代表创建你的对话的编辑视图，参见<link linkend="The-Widget-Editor">控件编辑器</link>。</para>
</listitem>
<listitem>
<para>属性窗口, 包含属性及其值的列表, 由当前再控件编辑器中选中的的控件决定。参见
<link linkend="Setting-Properties">设置属性</link>以获得关于如何指明控件行
为及外观的信息。</para>
</listitem>
</itemizedlist>
</para>
</sect2>

<sect2 id="kdevelopmenubar-menubar-toolbar-toolbar-stat">
<title>与 Kdevelop不同的菜单条Menubar <indexterm remap="idx"><primary>Menubar</primary></indexterm>, 工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm>及状态条
Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm>。</title>

<para>在对话框编辑器模式, Kdevelop对菜单条, 工具条及状态条有些许改变以提供你创建控件
widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>所需要的功能。它们是:</para>

<sect3 id="menubar-menubar">
<title>菜单条Menubar <indexterm remap="idx"><primary>Menubar</primary></indexterm></title>

<para>文件菜单<emphasis remap="bf">"File"-menu <indexterm remap="idx"><primary>"File"-menu</primary></indexterm>:</emphasis> 用"新的对话"取代"新的"。"打开"允许打开一个对话定
义文件。</para>

<para>视图菜单<emphasis remap="bf">"View"-menu <indexterm remap="idx"><primary>"View"-menu</primary></indexterm>:</emphasis> 用"控件-视图"取代"树-视图",激活/不激活控件-视图
定位装置；加入"属性-视图"以激活/不激活属性-视图和"网格尺寸"来让你用水平及垂直的
像素值指定网格尺寸。</para>

<para>建立菜单<emphasis remap="bf">"Build"-menu <indexterm remap="idx"><primary>"Build"-menu</primary></indexterm>:</emphasis> 由"生成资源"代替"编译文件Compile File <indexterm remap="idx"><primary>Compile File</primary></indexterm>"。
这让你实际生成你对话的资源。</para>
</sect3>

<sect3 id="toolbar-toolbar-1">
<title>工具条Toolbar <indexterm remap="idx"><primary>Toolbar</primary></indexterm></title>

<para>工具条包含一个"新的对话"的新按钮，并由"生成资源"代替"编译文件Compile
File <indexterm remap="idx"><primary>Compile
File</primary></indexterm>"。</para>
</sect3>

<sect3 id="statusbar-statusbar-0">
<title>状态条Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm></title>

<para>状态条为你提供关于当前选中的控件的信息, 尤其在坐标系中显示X及Y的值。对于状态条
Statusbar <indexterm remap="idx"><primary>Statusbar</primary></indexterm>帮助, 你将被提供与项目编辑模式同样的功能。</para>

<para>在改变控件尺寸时, 状态条会显示选中控件长宽的当前值。</para>
</sect3>
</sect2>
</sect1>

<sect1 id="index-121">
<title>创建新的对话</title>

<para>在创建了你的项目骨架后, 按照你的参数选择将为你提供一个运行准备好的了应用。由于
Kdevelop提供项目类型KDE及Qt应用, 对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>认可它并由以前
的库提供的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>来提供控件构造。要节省时间, 你还需在头脑中由格设计来
完成想要的操作。要得到关于控件设计的信息, 请参见<ulink url="programming/index- 6.html">KDevelop编程手册</ulink>。
要创建一个新的对话, 请从文件菜单"File"-menu <indexterm remap="idx"><primary>"File"-menu</primary></indexterm>中选择"新建"或在"对话"标签上从
上下文菜单中选择"新建"。"新的对话"菜单会出现，你必须在此给Kdevelop一个对话---关
于基础类资源文件名称及目的地的具体信息。</para>

<sect2 id="index-122">
<title>对话类</title>

<para>你可以选择的对话类, 是由你的新控件继承的类, 专门由类本身来代表。
因此，你有以下选项:
<orderedlist><listitem>
<para><emphasis remap="bf"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget:</emphasis> Qt提供的所有用户交互控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的基类。用于主视
及最高层的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。</para>
</listitem>
<listitem>
<para><emphasis remap="bf"><indexterm remap="cdx"><primary><literal>QFrame</literal></primary></indexterm>QFrame:</emphasis> 继承<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal>并由众多控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> 用作基
类。这对于除<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal>方法外还想拥有<literal remap="tt"><indexterm remap="cdx"><primary><literal>QFrame</literal></primary></indexterm>QFrame</literal>功能的控件
widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>很有用。</para>
</listitem>
<listitem>
<para><emphasis remap="bf">Custom:</emphasis> 继承一个必须在"自定义属性"中设置的自定义类。这可能是一个由你
的项目提供或库的已经设计好的类。</para>
</listitem>
<listitem>
<para><emphasis remap="bf"><indexterm remap="cdx"><primary><literal>QDialog</literal></primary></indexterm>QDialog:</emphasis> 你要继承为用户交互--例如设置属性或改变参数--使用的对话
的基类。</para>
</listitem>
<listitem>
<para><emphasis remap="bf"><indexterm remap="cdx"><primary><literal>QTabDialog</literal></primary></indexterm>QTabDialog:</emphasis> 继承<indexterm remap="cdx"><primary><literal>QDialog</literal></primary></indexterm>QDialog并提供一个有预先定义的按钮及一套标
签的对话, 这是你将由你要创建的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>提供的。</para>
</listitem>
</orderedlist>
</para>

<para>自定义属性<emphasis remap="bf">Custom Properties</emphasis></para>

<para>对在对话类域中选中的一个自定义类的继承, 你必须指定类名, 在"自定义类"里。对话编辑
器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 使用它来生成代码；因此, 你还必须插入"自定义头部", 在此还必
须设置自定义类的头文件名。</para>
</sect2>

<sect2 id="index-123">
<title>文件</title>

<para>在"文件"章节, 你必须键入控件的具体信息。即类名(这将是，例如对于一个允许选择钢笔
颜色的对话：KColorSelectDlg), 头部, C++ 及数据文件名。当插入类名, 文件名将由对话
编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>指定, 但是你也可以改变文件名。
现在，你的文件又如何呢? 当你准备构建可视化控件时, 你将不得不生成包含了你的控件的
实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>的文件。由于这将是一个类, 对话将与包含了类声明
classdeclaration <indexterm remap="idx"><primary>classdeclaration</primary></indexterm>的头文件，一个包含了你的控件的方法和槽的实现implementation <indexterm remap="idx"><primary>implementation</primary></indexterm>
方法的C++文件一起存在。数据文件是包含了一个可由你的控件的构造器及<emphasis>initDialog()</emphasis>
方法调用的函数。由于它将包含从对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>生成的代码以在屏幕上创建
控件这个文件本身不应该改动。如果你必须改变参数值, 你应该通过构造器来完成或保证你
在开发过程中不会改变对话, 因为每次生成可你的控件的代码，数据文件都会被重写。头部
及C++ 文件包含多个零件, 对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>会在此编写;这些由评论标注。在文
件生成后, 你可以改变任何值并在这些零件之外设置； 否则你的改动会在下一次代码生成
时丢失。</para>
</sect2>

<sect2 id="index-124">
<title>定位</title>

<para>要生成控件的资源, 对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 需要知道他们将被设置的位置。
output <indexterm remap="idx"><primary>output</primary></indexterm>目录的缺省值是当前项目的子目录，它包含已有的资源。</para>

<para>在按下"确定"后, 你的缺省值就已经生成，一个空的控件构造器也打开。然后你就准备开始
创建你自己的控件了。注意，对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm> 当前只支持没有几何管理的
静态控件 widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> 。如果你准备为你的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>使用几何管理, 你应该让
自己习惯于Qt为此提供的类classes <indexterm remap="idx"><primary>classes</primary></indexterm>, 使用类生成器创建一个新的类并自动编写自己
的控件。要获得更多信息，请参见<ulink url="programming/index.html"> KDevelop编程手册</ulink>。</para>
</sect2>
</sect1>

<sect1 id="adding-widgets">
<title>增加控件</title>

<para>在指定了对话或控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的类及文件名以后, 你可以准备开始创建控件并充实其
内容.为你的对话增加低水平的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>是件很容易的事. 只需从左边的"控件"定
位装置中通过在相关控件按钮上单击选择你要加入的控件. 然后控件就会放于当前打开的主
控件的左上角. 一个增加的控件会在编辑器editor <indexterm remap="idx"><primary>editor</primary></indexterm>视图中得到缺省的100x30像素的
大小. 要移动一个控件, 在其上点击以激活绘图框架, 它以深灰色显示，控件的顶部，底部，
左边，右边的中间及角落上都有热点。十字光标表明控件可以移动。要移动它, 请按下鼠标
左键不动，然后用你的鼠标移动控件到你希望它其后显示的位置.</para>

<para>要对一个控件重新设置大小, 请在一个已经激活的项目的热点上方移动你的鼠标光标。鼠标
光标会变为双箭头，表明重设大小的方向。按下鼠标左键不放。当鼠标移动到光标指示的方
向时，控件项目会改变它的大小。</para>

<para>另外, 控件编辑器包含许多上下文菜单以帮助你协调你的工作。这些对控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>
定位器中所有项目都可用，并提供一个快速帮助信息框，显示选中控件的类名并给予简短叙
述。
在选中控件上方, 上下文菜单显示选中项目的类名并提供:</para>

<para><itemizedlist>
<listitem>
<para>升高</para>
</listitem>
<listitem>
<para>降低</para>
</listitem>
<listitem>
<para>升到顶部</para>
</listitem>
<listitem>
<para>降到底部</para>
</listitem>
<listitem>
<para>剪切</para>
</listitem>
<listitem>
<para>删除</para>
</listitem>
<listitem>
<para>拷贝</para>
</listitem>
<listitem>
<para>粘贴</para>
</listitem>
<listitem>
<para>帮助</para>
</listitem>
</itemizedlist>
</para>

<para>在设置了尺寸和位置后, 你可以在参数窗口编辑选中项目的参数。</para>

<sect2 id="index-126">
<title>控件定位装置</title>

<para>对话框编辑器控件<indexterm><primary>dialog editor widgets</primary></indexterm>
控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm> 标签代表你可以放于对话的控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。如果你想得到关于某
个控件的信息, 请在控件按钮上按下鼠标右键并从弹出菜单中选择"快速-帮助"。注意如果
你的项目类型是纯Qt或KDE的，对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>是自动测定的。这会阻止
你在Qt应用中使用KDE-widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>。
在你选中了一个控件项目后, 它将以缺省尺寸及参数值放置于编辑器窗口并由一个框架和涂
黑的角标注为选中. 要改变一个控件的大小, 请在一个黑色的点山移动你的鼠标，你的光标
会改变以显示可能的变改方向. 然后一直按下鼠标键并移动鼠标. 当你完成控件尺寸的改动
后,松开鼠标. 在改变尺寸时, 状态条将通过X和Y的值显示项目的当前位置，并以W(宽) 和
H(高)的值显示当前大小.</para>
</sect2>

<sect2 id="index-127">
<title>对话定位装置</title>

<para>项目对话<indexterm><primary>project dialogs</primary></indexterm>
对话定位装置旨在让你通过鼠标点击打开你的项目的对话. 由于对话的结构时保存于在包含
了生成的文件的目录中的一个*.kdevdlg 文件内, 只有那些对话定义文件会显示. 还要注意
不要删除了这些定义文件.</para>

<para>选择了一个对话后, 它会在控件编辑视图中显示上一次编辑步骤后保存的状态.</para>
</sect2>

<sect2 id="index-128">
<title>项目定位装置</title>

<para>对话项目<indexterm><primary>dialog items</primary></indexterm>
项目定位装置让你可以分级的浏览当前显示的对话的控件项目. 这意味着, 由于你的背景代
表了对话中所有控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的父体, 它将显示在树的顶部. 主对话的孩子则列于树
的下一个级别.</para>

<para>选择了一个项目后, 它会标注于编辑器视图中, 其属性也会显示于属性窗口.使用项目视图
有时很重要，如果你控件widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>的行为要依靠父子关系的话。</para>
</sect2>
</sect1>

<sect1 id="the-widget-editor">
<title>控件编辑器</title>

<para>控件编辑器是居中的主视，你棵在此构造你的控件. 在增加了一个控件后, 它们可以选中并
重设大小, 或移动到你需要的位置. 对于所有项目, 弹出菜单会提供快速进入例如剪切，复
制，插入等操作的途径。</para>
</sect1>

<sect1 id="setting-properties">
<title>设置属性</title>

<para>设置控件属性<indexterm><primary>setting widget properties</primary></indexterm>
右端的属性窗口是你可以设置控件及其项目缺省行为的地方. 它会立即展示每个选中项目的
预设值; 改变参数值会导致控件编辑器视图的直接变化, 例如，名称标签或按钮.</para>

<para>要通过其效果分开一定的属性值, 属性窗口包含四个文件夹; 选择其一会弹出属性组的所有
值. 所有可能的值都得到描述. 注意，属性相对于控件独立, 例如，一个标签和按钮会有在
显示屏幕上的名称属性, 而行编辑会有方法属性，例如<emphasis>setText()</emphasis>.</para>

<para>对于每个项目可用值的完全列表, 你可以查看控件的类-参考，它解释了所使用的方法及所
有可能的值. 注意，大多数值在<literal remap="tt"><indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget</literal> 中得到应用，并由所有继承了
<indexterm remap="cdx"><primary><literal>QWidget</literal></primary></indexterm>QWidget的widgets <indexterm remap="idx"><primary>widgets</primary></indexterm>所使用. 还要注意最终代码并不包含任何不可由用户改变因
此只能使用控件构造器所给定的缺省值的方法调用.</para>

<para>所支持的可在属性窗口为每个控件项目设置的属性的完整列表.</para>
</sect1>

<sect1 id="index-131">
<title>生成文件</title>

<para>对话源代码的生成<indexterm><primary>dialog sourcecode generation</primary></indexterm></para>

<para>在生成了一个控件后, 你必须生成源代码以让它在你的项目中可用. 这可以由"建立"菜单
的"生成资源"或通过对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>工具条上的相关按钮来完成. 你的
Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s 将自动更新以在编译程序中包含新的控件; 因此, 在调用了"生成资源"以
后, 你可以在对话框编辑器dialog editor <indexterm remap="idx"><primary>dialog editor</primary></indexterm>中再次建立你的项目. 在项目编辑器模式下
输出output <indexterm remap="idx"><primary>output</primary></indexterm> window在控件编辑器窗口下弹出.</para>

<para>现在你的项目包含了一个新的控件, 你作为程序员的工作就是实现所使用的槽的功能，并最
后加入你可能需要的其他方法. 
<footnote>
<para>参见 <ulink url="programming/index- 6.html">KDevelop编程手册, 对话框编辑器</ulink>以获取关于控件属性及资源代码生成的更多信息.</para>
</footnote>
</para>
</sect1>
</chapter>

<chapter id="the-internal-debugger">
<title>内置调试器</title>

<sect1 id="index-133">
<title>设置</title>

<para>KDevelop的缺省设置是使用内置的调试器.你可以通过选择选项的"配置KDevelop" 菜单
来改变.</para>

<para>如果你要使用其它的调试器,点击"使用外部调试器"并输入其名字.参考你的调试器的文档
看它是怎样运行的.</para>

<para>如果你选择内置调试器,还有一些附加的选项:</para>

<para><itemizedlist>
<listitem>
<para>显示静态成员: 显示静态成员使gdb在kde和qt中产生
数据时变慢.它会改变QString及其友类所依赖的'签名'.但是如果你的确需要调试这
些值就选上它.</para>
</listitem>
<listitem>
<para>显示mangled名字: 在显示反汇编代码时,你可以选择是看mangled
名字,当然,非mangled的名字更易读.</para>
</listitem>
<listitem>
<para>在载入库中设置断点: 这将尝试在载入库中设置
断点.如果GDB没有看到通过'dlopen'方式载如的库,那么就拒绝在该处设置断点.我们可以
让gdb停在载入的库中并设置断点.参看
<link linkend="Shared-libraries-and-breakpoints">共享库与断点</link>以获取更进一步
的信息,如果你不是用"dlopen"方式载入库,关闭此选项</para>
</listitem>
<listitem>
<para>允许浮动的工具条: 作为对菜单和按钮的补充,它使你能够使用浮动的工具条来
控制调试器.
该工具条在调试GUI应用程序的时候尤为有用.具体的细节参见
<link linkend="The-floating-toolbar">浮动工具条</link>.</para>
</listitem>
<listitem>
<para>允许为程序的I/O使用分离的终端: 使你在应用程序包含从终端输入的代码(比如
cin,fgets等)时能够输入.如果你在程序中使用了终端输入就勾上此选项.</para>
</listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="index-134">
<title>使用内置调试器</title>

<sect2 id="index-135">
<title>树视图和输出视图窗口中的变化</title>

<para>如果你选择内置的调试器,树视图和输出视图中会增加四个标签.</para>

<sect3 id="index-136">
<title>树状视图窗口中</title>

<para><itemizedlist>
<listitem>
<para>VAR标签: 暂停程序在当前位置的局部变量的树状视图.同时,你可以看见
在调用该函数的函数中的变量.VAR标签还包含了观察窗口.你可以查看全局变量或某一
个局部变量而不是一大串局部变量的值.</para>
</listitem>
</itemizedlist>
</para>
</sect3>

<sect3 id="index-137">
<title>输出视图窗口中</title>

<para><itemizedlist>
<listitem>
<para>断点 : 断点的列表及其状态.</para>
</listitem>
<listitem>
<para>帧栈 : 调用栈.</para>
</listitem>
<listitem>
<para>反汇编 : 当前被执行的机器代码.</para>
</listitem>
</itemizedlist>
</para>
</sect3>
</sect2>

<sect2 id="index-138">
<title>在面板中和调试按钮的变化</title>

<sect3 id="index-139">
<title>面板中</title>

<para>在你启动调试器后会有两个普通和可按下的按钮来控制调试功能.</para>
</sect3>

<sect3 id="available-functions">
<title>调试菜单中</title>

<para>党开始调试时,10条控制调试的菜单变为可用.</para>

<para>已实现的功能: 
<itemizedlist>
<listitem>
<para>运行: 从当前位置继续程序执行.</para>
</listitem>
<listitem>
<para>运行到光标处: 执行程序直到光标的当前位置</para>
</listitem>
<listitem>
<para>单步跳过: 执行一行代码并停在同一源文件的下一行.这会运行任何遇
到的函数直至其符合上述条件.</para>
</listitem>
<listitem>
<para>单步跳过指令: 象上面一样,执行一条机器指令.</para>
</listitem>
<listitem>
<para>单步进入: 刚好执行一行代码.即如果存在,你将"单步进入"函数.</para>
</listitem>
<listitem>
<para>单步进入指令: 象上面一样执行一条机器指令.</para>
</listitem>
<listitem>
<para>单步跳出: 运行到当前栈帧(函数)结束.</para>
</listitem>
<listitem>
<para>浏览器: 允许对数据进行各种查看.
当前实现的查看有:
<orderedlist><listitem>
<para> 内存地址</para>
</listitem>
<listitem>
<para> 反汇编代码</para>
</listitem>
<listitem>
<para> 当前寄存器</para>
</listitem>
<listitem>
<para> 当前库</para>
</listitem>
</orderedlist>
</para>
</listitem>
<listitem>
<para>暂停: 暂停程序执行.</para>
</listitem>
<listitem>
<para>停止Stop: 停止程序执行并退出调试器.</para>
</listitem>
</itemizedlist>
</para>
</sect3>
</sect2>

<sect2 id="index-141">
<title>细节</title>

<sect3 id="index-142">
<title>断点</title>

<para>在源文件中可以设置断点或观察点.两种类型的断点都可以在任何时间设置,而观察
点只在变量的局部域中有意义.当你处理全局变量的时候,观察点更为有用.</para>
</sect3>

<sect3 id="index-143">
<title>设置/取消断点</title>

<para>只需要点击一下就可以设置/取消断点.在编辑器中你需要设置断点行左边的
"图标"边界上点击.再次点击就取消了该断点.</para>
</sect3>

<sect3 id="index-144">
<title>通过菜单控制断点</title>

<para>在断点列表或编辑器的图表边界中的断点上点右键,会出现一个关于断点的菜单.
你可以通过它来删除断点,清除所有的断点或者编辑断点.</para>
</sect3>

<sect3 id="index-145">
<title>编辑断点</title>

<para>使用上面的菜单现实断点编辑对话框.包括以下一些域:
<orderedlist><listitem>
<para>条件: 输入gdb中断程序执行的条件.</para>
</listitem>
<listitem>
<para>忽略次数: 你希望gdb在停止程序执行前忽略该断点多少次.</para>
</listitem>
<listitem>
<para>激活Enable: 激活以后,gdb将停于此处.如果禁止gdb则忽略.</para>
</listitem>
</orderedlist>
</para>
</sect3>

<sect3 id="index-146">
<title>清除所有断点</title>

<para>删除为该程序设置的所有断点</para>
</sect3>

<sect3 id="index-147">
<title>设置/取消观察点</title>

<para>在变量视图中的某个变量上点击鼠标右键.你可以通过现实的弹出式菜单在局部变量
上设置观察点.该功能局限于局部变量所在的域.党变量超过了其有效域,观察点被删
除.</para>

<para>警告:这可能会带来问题,所以在为局部变量设置观察点时要小心.</para>

<para>观察点也可以通过右击前一个遇到的观察变量并选择"设为观察点".</para>
</sect3>

<sect3 id="index-148">
<title>设置/取消观察变量</title>

<para>在变量视图的底部有一个"观察"域,你可以在这里输入希望显示在列表中的变量名字.
输入变量名并按回车或点击旁边的"添加"按钮.鼠标右击树状试图中的观察变量会出
现弹出式菜单,你可以通过它将观察变量删去.</para>

<para>你也可以在编辑窗口中的某个变量上点击鼠标右键,通过显示的菜单选择"查看:变量名"
来添加观察变量.</para>
</sect3>

<sect3 id="index-149">
<title>改变变量的值</title>

<para>通过观察变量实现.如果你有个变量叫"test",在观察域中输入"test=5"并将其添加到
列表中.注意,"test"在程序每次被断点中断时都会被设为5,所以你一旦设置了该变量,
往往需要从视图中删除掉.</para>
</sect3>
</sect2>
</sect1>

<sect1 id="the-floating-toolbar">
<title>浮动工具条</title>

<para>浮动工具条是内置调试器的一个特征,它使你调试GUI应用程序变得舒适.该工具条要么
在所有窗口的上面,要么在面板中.在面板中的时候,你可以点击按钮来执行程序.其执行
的功能是"单步调过".</para>

<para>除开<link linkend="Available-functions">已实现的功能</link>, 浮动工具条提供两个附加的功能:
<itemizedlist>
<listitem>
<para>设置焦点于kdevelop : 将焦点设置在KDevelop上</para>
</listitem>
<listitem>
<para>设置焦点于应用程序 : 把焦点设置在当你按下"将焦点设置在KDevelop上"时拥有
焦点的窗口上.这是一种折衷,应该把焦点设置在被调试的应用程序上,但这很难做到.
如果任何人有更好的方法实现这个功能,请告诉我们.</para>
</listitem>
</itemizedlist>
</para>

<para>当gdb中断程序时,可能是碰到了断点,我们高亮显示"设置焦点于KDevlop".我们并不
将焦点自动的切换到KDevelop,这样你可以在该处看一下应用程序窗口.点击"设置焦点"
按钮切换到Kdevelop或者按工具条上的按钮执行你选择的功能.</para>
</sect1>

<sect1 id="shared-libraries-and-breakpoints">
<title>共享库和断点</title>

<para>共享库和断点有一个可以得到合理解决的问题.这个问题是:gdb不会接受一个没有打开
的共享库中的断点,虽然该共享库即将会用dlopen打开.</para>

<para>解决办法是让gdb告诉我们一个共享库什么时候被打开的.我们通过设置"stop-on 1"来
实现.这意味着,当用户设置一个断点的时候,我们把该断点标记为挂起,如果gdb告知中断
成功则标记为活跃,否则保持其挂起状态.下一行代码将被"继续".</para>

<para>这就是"懒断点"</para>

<para>然而,当你使用"单步跳过"命令并且单步跳过的那行会载入库时可能会导致问题发生.
这会在载入库时引发中断.并且,一般调试器会"继续"(即运行到下一个断点或代码结
束).可以用户希望程序停在下一行,所以在这个位置上,我们并不继续,而是让它留在
那里(其中的某处会有一个dlopen命令).这不太和谐,但是没有更好的办法了.</para>
</sect1>
</chapter>

<chapter id="cvs">
<title>CVS 集成</title>

<para>Kdevelop还通过CVS存储器管理你的项目. CVS (concurrent version control)的作用是
让开发小组能够独立的使用同一个资源树并将改动合并到存储器. 通常, 存储器在服务器中
定位. 最初的存储器包括项目所含文件的基础设置; 而目录和文件是由开发者加入CVS或从
中去除的.</para>

<para>从局部来说, 开发者操作的是他的CVS树的拷贝. 他把他的改动编写到文件并测试, 如果他
的项目仍然工作正常,至少在某种程度上不完整的资源没有阻止其他开发人员在收到改动后
继续正常的操作CVS存储器.</para>

<sect1 id="index-152">
<title>创建仓库</title>

<para>当用KDevelop生成新的项目时,你可以直接将该项目导入为CVS模块.为此,你必须安装CVS
(也许已经安装了,如果没有,看一下你的安装盘或者找你们的系统管理员).</para>

<para>在应用程序向导KAppWizard的第三页(VCS支持),选择"CVS".随后该页的编辑框就变亮,
你可以指定导入的参数,下面将解释给出了选项.应用程序向导将把项目的源文件树做
为一个CVS模块插入到CVS的根目录下,同时在你本地生成CVS的一个拷贝作为新的项目.</para>

<para><emphasis remap="bf">注意:</emphasis>为生成起始仓库,你必须在CVS的根目录拥有写权限!而且该CVS根目录必须和你运行的KDevelop在同一台机器上. 如果你要在一台公用的CVS服务器上使用
仓库,那要么联系该服务器的管理员在服务器上用KDevelop建立项目,要么就按照以下步骤
做:</para>

<para><itemizedlist>
<listitem>
<para>在本地创建项目</para>
</listitem>
<listitem>
<para>将项目作为一个CVS模块导入到CVS服务器中</para>
</listitem>
<listitem>
<para>删除本地项目的源文件树</para>
</listitem>
<listitem>
<para>从CVS上获取项目源文件</para>
</listitem>
<listitem>
<para>载入你从CVS获取的项目后,在下述的选项对话框中打开CVS支持.</para>
</listitem>
</itemizedlist>
</para>

<para>要获取更进一步关于CVS的信息,请参考你本地系统中关于cvs的帮助,即<literal remap="tt">man cvs</literal> </para>

<para>下面我们讨论用应用程序向导生成仓库时碰到的若干选项</para>

<para><variablelist>
<varlistentry>
<term>VCS 位置:</term>
<listitem>
<para>这是项目源文件树将被导入,提交,获取,更新时的CVS根目录.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>VCS 仓库</term>
<listitem>
<para>这是你的项目在仓库中的模块名.由于它和项目的目录名相同,你可以在此
改变.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>标签</term>
<listitem>
<para>这是整个分支的标签.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>日志信息</term>
<listitem>
<para>是新模块的第一条日志信.当向仓库添加或提交时,你将被询问一条
日志信息以以记录你对仓库中源文件的更该.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Release标签</term>
<listitem>
<para>指定你的项目源文件树放在那一个标签下面,即你可以在CVS根目录下
用相同的模块名生成多个项目,彼此间用这个标签区分.所以你可以同时做相同项目的不同
分支.例子:KDE 2的标签是(缺省的) HEAD, KDE1.1.2的标签是 KDE&&lowbar;;1&&lowbar;;1&&lowbar;;1&&lowbar;;RELEASE.</para>
</listitem>
</varlistentry>
</variablelist>
</para>

<para>在用应用程序向导创建完你的项目以后,CVS支持选项已经设置,所以你可以象章节"
使用 CVS 命令"中所描述的,提交或者添加更改.</para>
</sect1>

<sect1 id="cvs-0">
<title>激活 CVS 支持</title>

<para>由于CVS支持大多只是专家或公司及在KDE CVS服务器下维护其项目的KDE开发者所需要,
是否使用CVS开发命令可随意. 要使CVS命令可用, 请先打开项目-选项对话并将选择的版
本控制改变为"CVS"。</para>
</sect1>

<sect1 id="cvs-1">
<title>使用 CVS 命令</title>

<para>以下命令通过上下文菜单在LFV 及RFV中可用:</para>

<para>对于未包含于存储器的文件:
<itemizedlist>
<listitem>
<para>加入存储器<emphasis remap="bf">Add to Repository</emphasis>: 将文件加入存储器. 文件将被设置为加入并将
由包含了所加入文件定位的目录的<literal remap="tt">commit</literal>命令传入存储器.</para>
</listitem>
</itemizedlist>
</para>

<para>对于存储器中已包含的文件:
<itemizedlist>
<listitem>
<para>更新<emphasis remap="bf">Update</emphasis>: 随CVS版本更新选中文件</para>
</listitem>
<listitem>
<para>提交<emphasis remap="bf">Commit</emphasis>: 提交所选文件到CVS存储器</para>
</listitem>
<listitem>
<para>从存储器中去除<emphasis remap="bf">Remove from Repository</emphasis>: 从存储器中去除文件</para>
</listitem>
</itemizedlist>
</para>

<para>对文件夹:
<itemizedlist>
<listitem>
<para>加入<emphasis remap="bf">Add</emphasis>: 将文件夹加入存储器</para>
</listitem>
<listitem>
<para>去除<emphasis remap="bf">Remove</emphasis>: 从存储器中去除文件夹</para>
</listitem>
<listitem>
<para>更新<emphasis remap="bf">Update</emphasis>: 递归的更新文件夹以与存储器同步</para>
</listitem>
<listitem>
<para>提交<emphasis remap="bf">Commit</emphasis>: 递归的将任何改动提交到存储器</para>
</listitem>
</itemizedlist>
</para>

<para>CVS命令都需要与CVS服务器进行网络连接.当激活某一命令, 你将看见一个对话,同时命令
被提交至CVS服务器,恢复输出. 因此你可以控制实际发生的情况及命令是否成功.</para>

<para>由于KDevelop的CVS命令只与<literal remap="tt">cvs</literal> 系统命令及其命令行选项协作,对于使用cvs特色
你应该毫无问题.</para>
</sect1>
</chapter>

<chapter id="general-configuration">
<title>一般设置</title>

<para>本章将描述你将如何设置你的KDevelo工作的个人参数. 以下叙述的所有设置可以在选项菜
单的相关条目中找到.</para>

<sect1 id="configuring-the-idxtools-menu">
<title>设置工具"Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>"菜单</title>

<para><indexterm><primary>configuring the Tools-menu</primary></indexterm><indexterm><primary>"Options"-menu</primary></indexterm></para>

<para>由于Kdevelop在其用户界面中支持第三方次程序的使用, 你可以设置configure <indexterm remap="idx"><primary>configure</primary></indexterm> 符
合你应用开发所需要的任何程序. 这可通过在工具菜单"Tools"-menu <indexterm remap="idx"><primary>"Tools"-menu</primary></indexterm>中将程序加入已
预先定义的程序来完成. 要改变工具菜单, 请从"选项"菜单中选择工具"Tools <indexterm remap="idx"><primary>Tools</primary></indexterm>". 这
一对话还允许指定条目名称, 程序及?想在执行中传递的另外的命令行选项. 要从目录中除
去一个程序, 请选择条目名称和"删除". 要加入一个程序, 先指定菜单入口, 这里 & 被用
作菜单-加速器; 你可以对比已设置的入口和入口列表. 选择二进制并传递你的命令行选项.
然后点击"加入"，此入口就被加入列表. 在离开设置对话configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>以后,
工具菜单会自我更新, 这样无须重新启动Kdevelop新的设置就可以使用了.</para>
</sect1>

<sect1 id="index-154">
<title>文件浏览器选项</title>

<para><indexterm><primary>file viewers</primary></indexterm></para>

<para>逻辑化的文件浏览器可以通过上下文菜单完整设置。由于此举的目的是逻辑的分开文件以更
好的浏览整个项目, 最常用的设置之一是创建文件组。它们可以通过在树的根部显示的项目
按钮上右击鼠标来打开上下文菜单进行设置。该菜单提供：
<itemizedlist>
<listitem>
<para>新文件New File <indexterm remap="idx"><primary>New File</primary></indexterm>: 打开新文件 New File <indexterm remap="idx"><primary>New File</primary></indexterm> 对话。等同于菜单条命令 "文
件"-"新建"</para>
</listitem>
<listitem>
<para>新类New Class <indexterm remap="idx"><primary>New Class</primary></indexterm>: 打开类生成器以创建一个新的类。等同于菜单条命令"项目"-
"New
Class <indexterm remap="idx"><primary>New
Class</primary></indexterm>"<indexterm><primary>"Project"-menu</primary></indexterm></para>
</listitem>
<listitem>
<para>新组: 打开对话建立一个新组。可在此设置组名及该组所显示的项目文件
project files <indexterm remap="idx"><primary>project files</primary></indexterm>的过滤器。</para>
</listitem>
<listitem>
<para>显示相对路径: 显示文件及其路径名，路径从主项目目录开始（如果检测到）；否则
只显示文件名。</para>
</listitem>
</itemizedlist>
</para>

<para>在主文件夹，相关的上下文菜单提供：
<itemizedlist>
<listitem>
<para>新组: 打开新组对话，如上下文菜单所述。</para>
</listitem>
<listitem>
<para>取消组: 从LFV <indexterm remap="idx"><primary>LFV</primary></indexterm>中取消组。</para>
</listitem>
<listitem>
<para>属性: 打开组的属性。可在此通过由commas分开的wildcards列表编辑文件过滤器。</para>
</listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="kdevelop-setup">
<title>Kdevelop 设置</title>

<para><emphasis remap="bf">Make-command <indexterm remap="idx"><primary>Make-command</primary></indexterm>:</emphasis>
一般选项对话允许你进行Kdevelop的一般设置。
首先，你应该在你的系统上将make-command <indexterm remap="idx"><primary>make-command</primary></indexterm>设置为可用。如果选中的程序不存在,下
一次KDevelop 会警告你你正在激活make命令。
<emphasis remap="bf">自动保存Autosave <indexterm remap="idx"><primary>Autosave</primary></indexterm>:</emphasis></para>

<para>如果选中自动保存, Kdevelop会定期对所有改动过的文件进行保存。自动保存的时间范围
可设置为 3, 5, 15 或30 分钟。</para>

<para><emphasis remap="bf">自动切换Autoswitch <indexterm remap="idx"><primary>Autoswitch</primary></indexterm>:</emphasis></para>

<para>如果选中自动切换, Kdevelop窗口会根据上下文的使用切换为开和关, 例如，如果你切换
到帮助菜单中的一个文档, 文档浏览器将打开, 文档树和输出output <indexterm remap="idx"><primary>output</primary></indexterm>窗口则关闭。
启动:</para>

<para>要启动KDevelop, 你可以在Kdevelop装载期间激活/不激活start-logo <indexterm remap="idx"><primary>start-logo</primary></indexterm>的显示。而
如果你不喜欢最近的项目在启动时被打开, 你可以取消缺省。</para>
</sect1>

<sect1 id="changing-keyboard-shortcuts">
<title>改变键盘快捷方式Keyboard Shortcuts <indexterm remap="idx"><primary>Keyboard Shortcuts</primary></indexterm></title>

<para>键盘键设置对话允许你设置Kdevelop的键盘键绑定。注意，通用键均可在KDE控制中心进
行设置, 例如打开文件和打印。 某键的功能可以通过选择菜单条目进行设置。然后设置可
以通过校验数值，例如Alt / Ctrl键等来改变。</para>
</sect1>

<sect1 id="documentation">
<title>文档</title>

<sect2 id="documentation-path">
<title>目录<indexterm><primary>documentation path</primary></indexterm></title>

<para>要想通过设置使文档浏览器documentation browser <indexterm remap="idx"><primary>documentation browser</primary></indexterm> 正常工作, KDevelop 需要一些
关于HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>-documentation在系统上位置的信息。因此, 文档路径属性对话需要
HTML <indexterm remap="idx"><primary>HTML</primary></indexterm>中Qt-在线文档的路径及到KDE-库文档的路径。</para>

<para>通常, Qt-文档Qt-Documentation <indexterm remap="idx"><primary>Qt-Documentation</primary></indexterm> 位于Qt安装的相同目录中；例如，如果Qt位于
/usr/local/qt, 你必须输入的路径即为/usr/local/qt/html。对于KDE-文档, 你必须将目
录设置为文档的根部, 确保所有的KDE-库文档位于相同的目录中。两个路径都可以通过按
下相关按钮, 显示路径设置来选择。如果你的系统部包含KDE-库文档, 你应该限输入下一
个设置对话configuration dialog <indexterm remap="idx"><primary>configuration dialog</primary></indexterm>, 升级KDE文档 KDE-Documentation <indexterm remap="idx"><primary>KDE-Documentation</primary></indexterm>。这会
按你选择的路径生成文档,并自动设置KDE库文档路径。</para>
</sect2>

<sect2 id="index-156">
<title>选项</title>

<sect3 id="kde-documentation-kde-documentation">
<title>升级KDE-Documentation <indexterm remap="idx"><primary>KDE-Documentation</primary></indexterm></title>

<para>对于那些没有近期KDE 库KDE-libraries <indexterm remap="idx"><primary>KDE-libraries</primary></indexterm>的用户, 尤其是安装在系统上的文件的文档,
升级的KDE 文档KDE-Documentation <indexterm remap="idx"><primary>KDE-Documentation</primary></indexterm> 对话会生成一个新的或升级已有的文档。这一
功能要求你的系统已经安装了KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm> 及qt2KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>, 包含于KDE-SDK <indexterm remap="idx"><primary>KDE-SDK</primary></indexterm>包内。
首先, 你必须设置你近期kde库资源的路径, 这不是包含KDE的路径! 只需输入资源的路径,
比如:/home/rnolden/kdelibs-1.1/.</para>

<para>接着, 你可以选择三种不同的安装模式, 如下:</para>

<para><itemizedlist>
<listitem>
<para> 删除旧文档并安装于近期的文档路径: 这假定你已经安装了一个文档且位于输入文
档路径对话的路径下。这将删除所有文档并安装新生成的文档到近期路径。</para>
</listitem>
<listitem>
<para> 删除旧文档并安装于新的文档路径: 这会导致象上一种模式一样删除旧文档, 但你
可以选择建立一个新的文档地点。</para>
</listitem>
<listitem>
<para> 不改变旧文档并安装于新的文档路径:推荐那些以前没有该文档或希望为老版本的
kde库保留上一个文档的用户生成一个新的kde库文档时使用。</para>
</listitem>
</itemizedlist>
</para>

<para>"新的 KDE 库文档路径"将为第二和第三种安装模式设置。推荐从头开始生成新文档的用户
使用。
在按下OK 按钮后, Kdevelop会在包含KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>参考文件的文档路径中生成一个子目录
"KDoc <indexterm remap="idx"><primary>KDoc</primary></indexterm>-reference" 。首先, qt库文档classes <indexterm remap="idx"><primary>classes</primary></indexterm> 将被索引以由将为kde库生成
的文档来连接Qt文档。因此你应该先设置好Qt文档路径以确保它可以由<literal remap="tt"><indexterm remap="cdx"><primary><literal>qt2kdoc</literal></primary></indexterm>qt2kdoc</literal>
找到，这一点很重要。最后, KDE库将被索引，文档将前后对照着建立，以使浏览具有更强
大的功能。</para>
</sect3>

<sect3 id="index-157">
<title>创建搜寻数据库</title>

<para>创建查找数据库对话, 可通过建立按钮进入, 它允许编程人员创建数据库以交互的方式查找
关键字。要创建和使用文档查找功能, 你必须先安装glimpse <indexterm remap="idx"><primary>glimpse</primary></indexterm> 4.0 程序。事先调整索
引给定的KDE 库文档及Qt-Documentation <indexterm remap="idx"><primary>Qt-Documentation</primary></indexterm>的选项, 假定文档文件的路径已在选项菜
单的 "文档路径"对话中设置。另外，索引可以包括用户可以通过" 另外的索引目录" 域自
行设置的目录。在设置好另外的目录的路径后, 必须按下"增加" 按钮以设置路径。一个以
前设置的路径可以通过在路径域选择路径并按下"去除"从索引中去除。此外, 用户可以选择
三种不同的索引尺寸: 极小的, 小型的以及中型的。索引尺寸越大, 索引文件越长。 但是, 更
大的查寻数据库中的查寻会更加快捷, 因此我们推荐使用"中等" 尺寸。要使用查找功能，
请参见<link linkend="Using-the-Documentation-Browser"> 使用文档浏览器</link>.</para>
</sect3>
</sect2>
</sect1>

<sect1 id="debugger">
<title>调试器 </title>

<para>KDevelop的缺省设置是使用<link linkend="The-Internal-Debugger">内置调试器</link>
如果你希望使用其它的调试器,输入其名字.查看该调试器的文档,确定如何运行.</para>

<para>如果你选择内置调试器,还有一些附加的选项:</para>

<para><itemizedlist>
<listitem>
<para>显示静态成员: 显示静态成员使gdb在kde和qt中产生
数据时变慢.它会改变QString及其友类所依赖的'签名'.但是如果你的确需要调试这
些值就选上它.</para>
</listitem>
<listitem>
<para>显示mangled名字: 在显示反汇编代码时,你可以选择是看mangled
名字,当然,非mangled的名字更易读.</para>
</listitem>
<listitem>
<para>在载入库中设置断点: 这将尝试在载入库中设置
断点.如果GDB没有看到通过'dlopen'方式载如的库,那么就拒绝在该处设置断点.我们可以
让gdb停在载入的库中并设置断点.参看
<link linkend="Shared-libraries-and-breakpoints">共享库与断点</link>以获取更进一步
的信息,如果你不是用"dlopen"方式载入库,关闭此选项</para>
</listitem>
<listitem>
<para>允许浮动的工具条: 作为对菜单和按钮的补充,它使你能够使用浮动的工具条来
控制调试器.
该工具条在调试GUI应用程序的时候尤为有用.具体的细节参见
<link linkend="The-floating-toolbar">浮动工具条</link>.</para>
</listitem>
<listitem>
<para>允许为程序的I/O使用分离的终端: 使你在应用程序包含从终端输入的代码(比如
cin,fgets等)时能够输入.如果你在程序中使用了终端输入就勾上此选项.</para>
</listitem>
</itemizedlist>
</para>
</sect1>

<sect1 id="setting-paths">
<title>设置路径</title>

<para>在路径栏输入Qt 2.x和 KDE 2的安装路径以及在那里生成新项目.关于安装Qt 2.x/KDE 2
以及将KDevelop配置为Qt 2.x 和 KDE 2,请阅读
<ulink url="tutorial/index.html">KDE应用程序教程</ulink>.</para>

<para>KDevelop生成新项目的缺省位置是用户的起始目录.如果你需要改变,在缺省项目路径
中输入你希望的目录.</para>
</sect1>
</chapter>

<chapter id="questions-and-answers">
<title>问与答</title>

<para>本节将叙述Kdevelop小组或其支持者在Kdevelop邮件列表中对用户在Kdevelop的当前版
本的使用中遇到的问题的回答及一般臭虫报告。</para>

<sect1 id="bug-reporting">
<title>臭虫报告Bug Reporting <indexterm remap="idx"><primary>Bug Reporting</primary></indexterm> </title>

<para>Kdevelop的另一个改进是集成的通过email完成的臭虫-报告系统。如果你遇到一个臭虫，
你可以通过你的email-客户或臭虫-报告对话给KDevelop 开发小组发送一个臭虫报告。所
有的 臭虫报告将收集在Kdevelop互连网站点并可在<ulink url="http://fara3.cs.uni- potsdam.de/~smeier/kdevelop/bugarchive/maillist.html">\|\|</ulink>观看。你还可以通过发送一
个空的以"预定<emphasis>your&&lowbar;;email&&lowbar;;address</emphasis>"作为正文内容的email邮件至<ulink url="mailto:kdevelop-bug-report-request@fara3.cs.uni-potsdam.de">kdevelop- bug-report-request@fara3.cs.uni-potsdam.de</ulink>来预订臭虫-报告有列表，以收到所有臭
虫-报告。</para>

<para>要发送你的臭虫-报告, 请通过你的邮件程序使用这个email地址。如果你想要使用Kdevelop
进行直接的臭虫-报告, 请从帮助菜单Help-menu <indexterm remap="idx"><primary>Help-menu</primary></indexterm>中选择"臭虫-报告"。报告对话将显
示，允许你输入所有关于你所发现的臭虫的必要的信息。在按下"确定"后, 对话内容将自动
发送到邮件列表中。</para>
</sect1>

<sect1 id="index-161">
<title>从哪里可以得到信息</title>

<para><emphasis remap="bf">问:</emphasis> 如果我遇到了在FAQ 文件及KDevelop手册中未曾包含的问题, 我应该在哪
里寻求帮助?</para>

<para><emphasis remap="bf">答:</emphasis> 在任何一种情况下都可以在<ulink url="mailto:kdevelop@fara3.cs.uni- potsdam.de">kdevelop@fara3.cs.uni-potsdam.de</ulink>预订Kdevelop邮件列表来询
问所有关于KDevelop 的问题。发送一封头部为空，以"预订"为内容的邮件；然后你就可以
参与讨论。所有问题都可以去那里叙述和讨论。如果你坚持那样, 你可以得到开发者及所有
遇到同样问题的用户的最大帮助, FAQ也可以不短更新。</para>

<para>KDevelop 主页KDevelop Homepage <indexterm remap="idx"><primary>KDevelop Homepage</primary></indexterm> 位于<ulink url="http://www.kdevelop.org">\|\|</ulink> ，
它也包含了一个邮件列表mailing-list <indexterm remap="idx"><primary>mailing-list</primary></indexterm> 档案，允许你浏览以交送的邮件, 因此你应
该先去哪里看看，大多数问题都以由开发小组及用户所提及。</para>
</sect1>

<sect1 id="index-162">
<title>库和系统问题</title>

<para><emphasis remap="bf">问:</emphasis> 错误的JPEG 库版本: 库为61版, 需要62版</para>

<para><emphasis remap="bf">答:</emphasis> 有两种方法。
<orderedlist><listitem>
<para> 当kde库安装好后，它会为jpeg库安装头文件, 这些是61版本, 然而大多数发布
的的软件 (红帽子) 使用的是62版本的库。要确定这一点只需从/opt/kde/include中移动
jpeglib.h。应该拾起包含了62版本需要的文件的pukka 。但是看看它上面的错误信息也
许是另一种方法, 无论如何你要确保你只拥有头文件及库的一种版本, 而且它们是一致的。

使用定位命令来证实我拥有正确版本的库和头文件十分有用，例如：
updatedb
定位libjpeg
定位jpeglib
</para>
</listitem>
<listitem>
<para> 你必须重新编译kde支持（不用jpeg压缩格式）
库 (./configure <indexterm remap="idx"><primary>configure</primary></indexterm> --使用-libjpeg -使用-libgif).</para>
</listitem>
</orderedlist>
</para>

<para><emphasis remap="bf">问:</emphasis>
<screen>make[2]: Entering directory `/usr/local/src/kdevelop-0.3/po'
cd .. && automake --gnu --include-deps po/Makefile
aclocal.m4: 2709: `AM_PROG_INSTALL' is obsolete; use `AC_PROG_INSTALL'
make[2]: *** [Makefile.in] Error 1
</screen>

<emphasis remap="bf">答:</emphasis>对于automake-1.4/automake-2.13 用户: 只需手动运行 "aclocal"就可以编
译它。</para>

<para><emphasis remap="bf">问:</emphasis> 如果configure <indexterm remap="idx"><primary>configure</primary></indexterm>说我需要giflib23我应该怎么办？</para>

<para><emphasis remap="bf">答:</emphasis> 试着使用一个更新的kde支持的快照，或者安装另外一个giflib。</para>

<para><emphasis remap="bf">问:</emphasis> 我如何转换KDevelop 0.2 项目为0.3 项目?</para>

<para><emphasis remap="bf">答:</emphasis> 请在configure <indexterm remap="idx"><primary>configure</primary></indexterm>.in中把AC&&lowbar;;OUTPUT改变为在线版本。</para>

<para>例如:
旧版本:
<screen>AC_OUTPUT(Makefile \
kdevelop/kwrite/Makefile \
kdevelop/templates/Makefile
)
</screen>

新版本:
<screen>AC_OUTPUT(Makefile kdevelop/kwrite/Makefile kdevelop/templates/Makefile)
</screen>
</para>

<para><emphasis remap="bf">问:</emphasis>  在由KDE 1.1使用SuSE Linux时我得到了以下连接器错误Linker <indexterm remap="idx"><primary>Linker</primary></indexterm>
errors <indexterm remap="idx"><primary>errors</primary></indexterm>, 怎样才能使Kdevelop正确连接?
<screen>/usr/lib/libqt.so:
warning: multiple common of `QArrayT&&lt;;char&&gt;; type_info node'
ckdevelop.o: warning: previous common is here
ckdevelop.o: In function `CKDevelop::slotFileSaveAll(void)':
ckdevelop.o(.text+0x784): undefined reference to `kdebug(unsigned short,
unsigned short, char const *,...)'
ckdevelop.o(.text+0x839): undefined reference to `kdebug(unsigned short,
unsigned short, char const *,...)'
ckdevelop.o(.text+0x89d): undefined reference to `kdebug(unsigned short,
unsigned short, char const *,...)'
ckdevelop.o: In function `CKDevelop::slotFileSaveAs(void)':
ckdevelop.o(.text+0xd28): undefined reference to `kdebug(unsigned short,
unsigned short, char const *,...)'
ckdevelop.o: In function `CKDevelop::slotFileClose(void)':
ckdevelop.o(.text+0x1216): undefined reference to `kdebug(unsigned short,
unsigned short, char const *,...)'
ckdevelop.o(.text+0x1263): more undefined references to `kdebug(unsigned
short, unsigned short, char const     *,...)' follow  collect2: ld returned 1
exit status  make[2]: ***
[kdevelop] Error 1  make[2]: Leaving directory
'/home/LinuXDaten/Programme_Updates_Packete/KDE_Updates/Kdevelop_actual_snapshot/kdev
elop-0.3/kdevelop'
make[1]: *** [all-recursive] Error 1  make[1]: Leaving directory
`/home/LinuXDaten/Programme_Updates_Packete/KDE_Updates/Kdevelop_actual_snapshot/kdev
elop-0.3'
make: *** [all-recursive-am] Error 2
</screen>

<emphasis remap="bf">答:</emphasis> 如果你由使用SuSE Linux, 你必须重新编译kde库且不使用SuSE的补丁，
并重新安装，或从<ulink url="ftp://ftp.suse.com">\|\|</ulink>获得kde库的升级版本</para>
</sect1>

<sect1 id="index-163">
<title>使用中的问题</title>

<para><emphasis remap="bf">问:</emphasis> 我发现Kdevelop并不允许使用delete 键(或退格键来删除标注的文本)。</para>

<para><emphasis remap="bf">答:</emphasis> 在"选项"-&gt;"编辑器"中确认"输入时删除" 被选中, 然后就可以进行退
格和删除操作。</para>

<para><emphasis remap="bf">问:</emphasis> 如果我在项目中加入了文件, 加入的文件会被自动包含并编译吗？</para>

<para><emphasis remap="bf">答:</emphasis> 是的, 它们包含于Makefile.am <indexterm remap="idx"><primary>Makefile.am</primary></indexterm>内，如果你使用了"全部重建"
(./configure <indexterm remap="idx"><primary>configure</primary></indexterm> 升级Makefile <indexterm remap="idx"><primary>Makefile</primary></indexterm>s), 你新加入的文件也会包括在内。</para>

<para><emphasis remap="bf">问:</emphasis> 如果我移动了一个文件, 我会得到一些奇怪的连接器Linker <indexterm remap="idx"><primary>Linker</primary></indexterm> 的信息。
我的项目究竟这么了?</para>

<para><emphasis remap="bf">答:</emphasis> 如果移动的文件是一个头文件, 那将由自动进行automoc (自动在头文件上
运行Qt-Meta-对象--编译器), 你移动过的头部仍然以一个moc-生成的 *.moc.cpp文件表
示并编译。移动相关的*.moc.cpp文件并重建项目。</para>
</sect1>
</chapter>

<chapter id="index-164">
<title>作者</title>

<para><emphasis remap="bf">主要开发人员:</emphasis></para>

<para>Sandy Meier 			<ulink url="mailto:smeier@kdevelop.de">&lt;smeier@kdevelop.de&gt;</ulink>
(维护者,开发协调者,主页提供者)
<quote>主要开发: 框架结构,IDE主观视觉,项目管理.</quote></para>

<para>Stefan Heidrich			<ulink url="mailto:sheidric@rz.uni-potsdam.de">&lt;sheidric@rz.uni-potsdam.de&gt;</ulink>
<quote>主要开发: KAppWizard <indexterm remap="idx"><primary>KAppWizard</primary></indexterm>, printing <indexterm remap="idx"><primary>printing</primary></indexterm> functionality</quote></para>

<para>Ralf Nolden			    <ulink url="mailto:rnolden@kdevelop.de">&lt;rnolden@kdevelop.de&gt;</ulink>
<quote>主要开发: KDevelop&lt;-&gt;对话框编辑器接口,配置功能,在线帮助和手册</quote></para>

<para>Jonas Nordin			  <ulink url="mailto:jonas.nordin@cenacle.se">&lt;jonas.nordin@cenacle.se&gt;</ulink>
<quote>主要开发: 类浏览器,语法分析器 </quote></para>

<para>Pascal Krahmer 			<ulink url="mailto:pascal@beast.de">&lt;pascal@beast.de&gt;</ulink>
<quote>主要开发: 对话框编辑器</quote></para>

<para>Bernd Gehrmann 			<ulink url="mailto:bernd@physik.hu-berlin.de">&lt;bernd@physik.hu-berlin.de&gt;</ulink>
<quote>主要开发: Grep对话框 , CVS集成 ,新的文档树 </quote></para>

<para>J鰎gen Olsson       <ulink url="mailto:jorgen@cenacle.net">&lt;jorgen@cenacle.net&gt;</ulink>
<quote>主要开发: 可视类树</quote></para>

<para>Stefan Bartel 			<ulink url="mailto:bartel@rz.uni-potsdam.de">&lt;bartel@rz.uni-potsdam.de&gt;</ulink>
<quote>主要开发: 实际文件浏览器</quote></para>

<para>Walter Tasin        <ulink url="mailto:tasin@kdevelop.de">&lt;tasin@kdevelop.de&gt;</ulink>
<quote>主要开发: 加强和更正错误</quote></para>

<para>John Birch          <ulink url="mailto:jbb@ihug.co.nz">&lt;jbb@ihug.co.nz&gt;</ulink>
<quote>主要开发: 集成调试器</quote></para>

<para><emphasis remap="bf">Translation coordination:</emphasis></para>

<para>Martin Piskernig		<ulink url="mailto:mpiskernig@kdevelop.de">&lt;mpiskernig@kdevelop.de&gt;</ulink></para>

<para><emphasis remap="bf">Program and Documentation Translations:</emphasis></para>

<para><itemizedlist>
<listitem>
<para>Martin Spirk 				<ulink url="mailto:spirk@kla.pvt.cz">&lt;spirk@kla.pvt.cz&gt;</ulink> 			-捷克语</para>
</listitem>
<listitem>
<para>Steen Rabol    			<ulink url="mailto:rabol@get2net.dk">&lt;rabol@get2net.dk&gt;</ulink>			-丹麦语</para>
</listitem>
<listitem>
<para>Peeter Russak       <ulink url="mailto:pezz@tkwcy.ee">&lt;pezz@tkwcy.ee&gt;</ulink>	            - 爱沙尼亚语</para>
</listitem>
<listitem>
<para>Sami Kuhmonen 			<ulink url="mailto:sami@iqs.fi">&lt;sami@iqs.fi&gt;</ulink>					-芬兰语</para>
</listitem>
<listitem>
<para>Herve Lefebvre 			<ulink url="mailto:hlefebvre@easynet.fr">&lt;hlefebvre@easynet.fr&gt;</ulink>			-法语</para>
</listitem>
<listitem>
<para>Martin Piskernig    <ulink url="mailto:mpiskernig@kdevelop.de">&lt;mpiskernig@kdevelop.de&gt;</ulink>	-德语</para>
</listitem>
<listitem>
<para>Ralf Funken         <ulink url="mailto:rfunken@kdevelop.de">&lt;rfunken@kdevelop.de&gt;</ulink>	-德语</para>
</listitem>
<listitem>
<para>Pahan Szabolcs 			<ulink url="mailto:szabczy@bigfoot.com">&lt;szabczy@bigfoot.com&gt;</ulink>			-匈牙利语</para>
</listitem>
<listitem>
<para>Massimo Morin       <ulink url="mailto:mmorin@schedsys.com">&lt;mmorin@schedsys.com&gt;</ulink> -意大利语</para>
</listitem>
<listitem>
<para>Taiki Komoda        <ulink url="mailto:kom@kde.gr.jp">&lt;kom@kde.gr.jp&gt;</ulink>  - 日语</para>
</listitem>
<listitem>
<para>Jacek Wojdel 				<ulink url="mailto:wojdel@kbs.twi.tudelft.nl">&lt;wojdel@kbs.twi.tudelft.nl&gt;</ulink>     -波兰语</para>
</listitem>
<listitem>
<para>Duarte Loreto 			<ulink url="mailto:dnloreto@esoterica.pt">&lt;dnloreto@esoterica.pt&gt;</ulink>		-葡萄牙语</para>
</listitem>
<listitem>
<para>Guilherme Ceschiatti B.M.<ulink url="mailto:guiga@cpdee.ufmg.br">&lt;guiga@cpdee.ufmg.br&gt;</ulink>  -巴西葡萄牙语</para>
</listitem>
<listitem>
<para>Ilmar Habibulin    	<ulink url="mailto:ilmar@ints.ru">&lt;ilmar@ints.ru&gt;</ulink>				-俄语</para>
</listitem>
<listitem>
<para>Jan Prokop 					<ulink url="mailto:jprokop@ibl.sk">&lt;jprokop@ibl.sk&gt;</ulink>				-斯洛伐克语Slovak</para>
</listitem>
<listitem>
<para>Salvador Gimeno 		<ulink url="mailto:salgiza@eui.upv.es">&lt;salgiza@eui.upv.es&gt;</ulink>		-西班牙语</para>
</listitem>
<listitem>
<para>Patrik Adolfsson 		<ulink url="mailto:patrik.adolfsson@iname.com">&lt;patrik.adolfsson@iname.com&gt;</ulink>		-瑞典语</para>
</listitem>
<listitem>
<para>Ka餫n Kongar        <ulink url="mailto:kongar@doruk.net.tr">&lt;kongar@doruk.net.tr&gt;</ulink> - 土耳其语</para>
</listitem>
<listitem>
<para>李宋琛       <ulink url="mailto:leesongchen@263.net">&lt;leesongchen@263.net&gt;</ulink> - 简体中文(GB2312)</para>
</listitem>
</itemizedlist>
</para>

<para><emphasis remap="bf">启动徽标:</emphasis></para>

<para><itemizedlist>
<listitem>
<para>KDevelop 1.0: Jacek Wojdel 			<ulink url="mailto:wojdel@kbs.twi.tudelft.nl">&lt;wojdel@kbs.twi.tudelft.nl&gt;</ulink></para>
</listitem>
<listitem>
<para>KDevelop 1.1, 1.2: Ralph Kocher      <ulink url="mailto:RKocher@t-online.de">&lt;RKocher@t-online.de&gt;</ulink></para>
</listitem>
</itemizedlist>
</para>

<para><emphasis remap="bf">增加部分,补丁和bug定位:</emphasis></para>

<para><itemizedlist>
<listitem>
<para>Pau Estalella Fernandez <ulink url="mailto:pef@upcnet.upc.es">&lt;pef@upcnet.upc.es&gt;</ulink></para>
</listitem>
<listitem>
<para>Jost Schenk    					<ulink url="mailto:Jost@Schenk.de">&lt;Jost@Schenk.de&gt;</ulink></para>
</listitem>
<listitem>
<para>David Barth    					<ulink url="mailto:dbarth@videotron.ca">&lt;dbarth@videotron.ca&gt;</ulink></para>
</listitem>
<listitem>
<para>Matthias Hipp						<ulink url="mailto:Matthias.Hipp@gmx.de">&lt;Matthias.Hipp@gmx.de&gt;</ulink></para>
</listitem>
<listitem>
<para>Martin Piskernig    		<ulink url="mailto:martin.piskernig@stuwo.at">&lt;martin.piskernig@stuwo.at&gt;</ulink></para>
</listitem>
<listitem>
<para>Jochen Wilhelmy 				<ulink url="mailto:digisnap@cs.tu-berlin.de">&lt;digisnap@cs.tu-berlin.de&gt;</ulink></para>
</listitem>
<listitem>
<para>Matthias Hoelzer-Kluepfel    	<ulink url="mailto:mh@caldera.de">&lt;mh@caldera.de&gt;</ulink></para>
</listitem>
<listitem>
<para>Matt Koss 							<ulink url="mailto:koss@napri.sk">&lt;koss@napri.sk&gt;</ulink></para>
</listitem>
<listitem>
<para>Torsten Uhlmann 				<ulink url="mailto:TUhlmann@debis.com">&lt;TUhlmann@debis.com&gt;</ulink></para>
</listitem>
<listitem>
<para>Stefan Mars             <ulink url="mailto:mars@lysator.liu.se">&lt;mars@lysator.liu.se&gt;</ulink></para>
</listitem>
<listitem>
<para>Nikolay Liber           <ulink url="mailto:nikolay_liber@mail.ru">&lt;nikolay_liber@mail.ru&gt;</ulink></para>
</listitem>
<listitem>
<para>Gordon Tyler            <ulink url="maito:gtyler@iafrica.com">&lt;gtyler@iafrica.com&gt;</ulink></para>
</listitem>
<listitem>
<para>Huy Cuong Nguyen        <ulink url="maito:huyc@iquebec.com">&lt;huyc@iquebec.com&gt;</ulink></para>
</listitem>
<listitem>
<para>John R. Zedlewski       <ulink url="mailto:zedlwski@princeton.edu">&lt;zedlwski@princeton.edu&gt;</ulink></para>
</listitem>
<listitem>
<para>Stephan Uhlmann         <ulink url="mailto:suhlmann@gmx.de">&lt;suhlmann@gmx.de&gt;</ulink></para>
</listitem>
<listitem>
<para>Charles Egan            <ulink url="mailto:cega@oklahoma.net">&lt;cega@oklahoma.net&gt;</ulink></para>
</listitem>
<listitem>
<para>Andrew Morton           <ulink url="mailto:morton@nortelnetworks.com">&lt;morton@nortelnetworks.com&gt;</ulink></para>
</listitem>
<listitem>
<para>p&&lowbar;;george                <ulink url="mailto:p_george@club-internet.fr">&lt;p_george@club-internet.fr&gt;</ulink></para>
</listitem>
<listitem>
<para>Lubos Lunak             <ulink url="mailto:l.lunak@sh.cvut.cz">&lt;l.lunak@sh.cvut.cz&gt;</ulink></para>
</listitem>
<listitem>
<para>Armin L. Schneider      <ulink url="mailto:armin@uumail.de.uu.net">&lt;armin@uumail.de.uu.net&gt;</ulink></para>
</listitem>
<listitem>
<para>Martin Spirk            <ulink url="mailto:spirk@kla.pvt.cz">&lt;spirk@kla.pvt.cz&gt;</ulink></para>
</listitem>
<listitem>
<para>Ralf Palsa              <ulink url="mailto:rpalsa@eso.org">&lt;rpalsa@eso.org&gt;</ulink></para>
</listitem>
<listitem>
<para>Richard Dale            <ulink url="mailto:Richard_Dale@tipitina.demon.co.uk">&lt;Richard_Dale@tipitina.demon.co.uk&gt;</ulink></para>
</listitem>
<listitem>
<para>Holger Schurig          <ulink url="mailto:holger@holger.om.org">&lt;holger@holger.om.org&gt;</ulink></para>
</listitem>
<listitem>
<para>Dag Andersen            <ulink url="mailto:dandersen@c2i.net">&lt;dandersen@c2i.net&gt;</ulink></para>
</listitem>
<listitem>
<para>Alexis Mikhailov        <ulink url="mailto:alexis@abc.cap.ru">&lt;alexis@abc.cap.ru&gt;</ulink></para>
</listitem>
<listitem>
<para>Ulltveit-Moe            <ulink url="mailto:Nils.Ulltveit-Moe@hia.no">&lt;Nils.Ulltveit-Moe@hia.no&gt;</ulink></para>
</listitem>
<listitem>
<para>Nich Hudson             <ulink url="mailto:nick@nthcliff.demon.co.uk">&lt;nick@nthcliff.demon.co.uk&gt;</ulink></para>
</listitem>
<listitem>
<para>R. Imura                <ulink url="mailto:imura@cs.titech.ac.jp">&lt;imura@cs.titech.ac.jp&gt;</ulink></para>
</listitem>
<listitem>
<para>Falk Brettschneider     <ulink url="mailto:gigafalk@yahoo.com">&lt;gigafalk@yahoo.com&gt;</ulink></para>
</listitem>
<listitem>
<para>Ralf Funken             <ulink url="mailto:rfunken@kdevelop.de">&lt;rfunken@kdevelop.de&gt;</ulink>
</para>
</listitem>
</itemizedlist>
</para>

<para><emphasis remap="bf">KDevelop包含了以下程序的源代码:</emphasis></para>

<para><emphasis remap="bf">KWrite 0.98</emphasis> &&copy;;		by Jochen Wilhelmy		<ulink url="mailto:digisnap@cs.tu-berlin.de">&lt;digisnap@cs.tu-berlin.de&gt;</ulink></para>

<para><emphasis remap="bf">KDE Help</emphasis> &&copy;;		by Martin R. Jones 		<ulink url="mailto:mjones@kde.org">&lt;mjones@kde.org&gt;</ulink></para>

<para><emphasis remap="bf">KSwallow</emphasis>	&&copy;; 		by Matthias Hoelzer  <ulink url="mailto:hoelzer@physik.uni-wuerzburg.de">&lt;hoelzer@physik.uni-wuerzburg.de&gt;</ulink></para>

<para><emphasis remap="bf">kcmlocale</emphasis>	&&copy;; 1998 	by Matthias Hoelzer <ulink url="mailto:hoelzer@physik.uni-wuerzburg.de">&lt;hoelzer@physik.uni-wuerzburg.de&gt;</ulink></para>
</chapter>

<chapter id="index-165">
<title>感谢</title>

<para>我们想要特别感谢以不同的方式给了我们支持，让我们可以完成并改进Kdevelop的我们所
有的家庭成员和朋友。</para>

<para>而且，我们感谢Jochen Wilhelmy的程序编写和为将它集成为Kdevelop所提供的帮助。</para>

<para>还要感谢KDE 开发小组及Stephan Kulow, 是他们使我们能够通过CVS使用Kdevelop进行
工作。
我们希望我们在此产品上付出的免费工作会让人们更多的认同免费软件及其开发。没有众多
人的帮助和理想主义, KDevelop IDE将永远不会在如此短的时间周期内得以实现。我们很
自豪，有如此多的用户已经报告了他们的愉快使用并将KDevelop 带至了它的目标: 帮助免
费软件编程人员建立一个更好的软件世界，让用户可以拥有更多的选择自由。</para>
</chapter>

<chapter id="copyright">
<title>版权</title>

<para><screen>
KDevelop 版权 1998,1999 The KDevelop开发小组.

本程序是一歌免费软件；你可以重新发布它或以GNU 一般公有执照的术语指定它，因为它
是基于免费软件的的基础来出版的；不管是执照的2版，或(你可选择)任何以后版本。

本程序的发布是寄望于它会对程序员的工作很有用,但没有任何授权；没有甚至是一点商品
或有特殊用途的设备的暗示性授权。可参见GNU 一般公有执照查看更多细节。

你应该已经随本程序一起收到一个GNU 一般公有执照的拷贝；如果没有，请写信至Free 
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</screen>
</para>
</chapter>
<![ %addindex; [ &docindex; ]]>
</book>
<!--
Local Variables:
mode: sgml
sgml-omittag: nil
sgml-shorttag: t
sgml-general-insert-case: lower
End:
-->
