📄 kdevelop-manual-3.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21"> <TITLE>Kdevelop使用手册: 程序篇</TITLE> <LINK HREF="kdevelop-manual-4.html" REL=next> <LINK HREF="kdevelop-manual-2.html" REL=previous> <LINK HREF="kdevelop-manual.html#toc3" REL=contents></HEAD><BODY><A HREF="kdevelop-manual-4.html">Next</A><A HREF="kdevelop-manual-2.html">Previous</A><A HREF="kdevelop-manual.html#toc3">Contents</A><HR><H2><A NAME="Programs"></A> <A NAME="s3">3.</A> <A HREF="kdevelop-manual.html#toc3">程序篇</A></H2><P> 现在Kdevelop已经正确安装完成,最常用的选项也已设置完毕,你可能很想知道它是否如它所承诺的一样好用。本章将就程序是如何由GNU工具创建的作出总体指导,尤其要说明Kdevelop在此过程在中所起的作用。</P><H2><A NAME="The Compiler"></A> <A NAME="ss3.1">3.1</A> <A HREF="kdevelop-manual.html#toc3.1">编译器</A></H2><P>Compiler实际上是你系统上的一个程序,它必须最小安装以创建运行的程序;它是将源代码编译为目标文件,并生成程序的部件。一般来说,你可以这样开始:打开一个你喜欢的编辑器――注意不要使用文字处理器。打出例如以下字段以创建你的第一个程序的源文件:</P><P><BLOCKQUOTE><CODE><PRE>#include <iostream.h>int main(){cout << "Hello World" << endl;}</PRE></CODE></BLOCKQUOTE>好,实际上程序所有要做的事就是以标准output输出打印出字符串"Hello World".但这仅仅是建立这个程序的源代码,而并非程序本身。因此,我们需要一个Compiler编译器,在此例中是一个C++-Compiler编译器,例如g++。这样我们就可以将源代码保存为文件例如myprogram.cpp,并可由文件名(在控制台上)激活Compiler编译器:<BLOCKQUOTE><CODE><PRE>g++ -o myprogram myprogram.cpp</PRE></CODE></BLOCKQUOTE>然后我们就可以启动我们的程序了――只需在控制台上打出<CODE>myprogram</CODE>,程序就会打印出字符串;然后退出。</P><H2><A NAME="Make"></A> <A NAME="ss3.2">3.2</A> <A HREF="kdevelop-manual.html#toc3.2">Make和 Makefiles</A></H2><P>我拥有我所需要的一切东西:一个编辑器,一个Compiler编译器,然后我就可以执行我自己的C++程序了。但事情并非总是那么容易。如果你有一个以上的源文件怎么办呢?当你仅改动了一个程序时,你需要一次又一次的重新编译所有的源文件吗?由于你必须打出所有的命令和选项,编译会变得越来越复杂和费时。为此,你可以先编写好一个所谓的"Makefile"。你可以给它取任何名字,但不要和你要建立的程序名字一样。然后,你应该安装好<CODE>make</CODE>或者<CODE>gmake</CODE>工具,或者可以保存某个项目的编译结果的任何其他工具。把你的所有Compiler编译命令以一定句法写入哪个Makefile并保存;然后你只需于控制台上打出<CODE>make</CODE>或者<CODE>gmake</CODE>到你的Makefile文件所在的目录,再确定任务,指挥Compiler来创建你的应用程序。"创建"工具还有很多其他优点,有很多功用。如果想了解完整概况,请打开一个控制台并打出:</P><P><CODE>man make</CODE></P><P>或在KDEHelp中搜寻"GNU Make","System GNU Info contents"。至少,你已经认识到,为什么一个开发者需要make工具来让使他的应用程序的编译更容易。现在,编写Makefiles不仅仅是一项手动工作,你还必须钻研所有整个句法和所有选项。但这里有一个关于Kdevelop和任何Make-utility的好消息:你只需在<A HREF="kdevelop-manual-14.html#General Configuration">Kdevelop Setup</A>KDE一般设置对话中设置好Make-命令就可以了。所有由Kdevelop创建的项目都会使用那个Make命令来建立目标应用程序,而无须打任何命令。只要在KDE的工具条上点击按钮,从第三条分隔线开始,或者在"Build"菜单中为Make选择想要的工具。然后工具条和build菜单会提供你需要的最常用的功能来由make完成这个累活。</P><P><UL><LI> Compile File 编译文件:只有当你正着手于一项源文件时才是激活的。它用正确的命令激活make来编译当前源文件。</LI><LI> Make建造: 访问make并创建你的目标文件。</LI><LI> Rebuild all全部重建: 重建整个项目。</LI><LI> Clean/Rebuild all全部清除/重建: 先清除项目目录,然后重新运行make。</LI><LI> Stop Build停止建造: 取消当前程序--这是最常用的,如果你观察make的工作情况,仔细看你的源文件就知道。然后--啊--我忘了这件事了。。。你还必须修正你的代码。只需点击"停止",更正你自己所发现的错误,再重新运行Make就是了。</LI></UL></P><P>但这并不是Kdevelop和make一起使用的唯一方式--对于KDEapplications应用,还有一些特别之处,例如为国际化创建消息文件。这些功能也被包括进来,所以你无须再担心这些事了。到现在,你已经了解了源文件,Compiler及为什么需要make了。在下几节中,我们会讨论由Kdevelop自动创建的项目是如何在大多数其他的使用<CODE>configure-</CODE>script脚本的Unix平台上被编译的。</P><H2><A NAME="Configure"></A> <A NAME="ss3.3">3.3</A> <A HREF="kdevelop-manual.html#toc3.3">设置</A></H2><P>本节的题目很可能让你疑惑:设置?有什么必须要设置的?谁来完成呢?好,假设你已经写好了一个包含了Makefile的程序。然后你想要发布它,但这些编译过的二进制代码在你的系统上或是与你的系统兼容的机子上不能运行。为了支持其他平台,例如另外的Unix系统或是如Alpha机、RISC机,你就必须重新编译这个程序。最简单的办法就是把源文件包拷贝到目标机器并再次运行<CODE>make</CODE>。但要是目标机器使用的是另一种Compiler编译命令或者在另外某方面在建立你的二进制时遇到了问题该怎么办呢?更不要说更困难的情况了,例如你的程序和文档--例如KDE的安装路径,不能在一台机子上被安装到<CODE></CODE>opt/kde/,而在另一太机子上被安装到<CODE></CODE>usr/local/kde/下。在这种情况下,你就必须每次都重写Makefile文件,以保证你的产品的正确编译和安装。幸运的是,GNU工具甚至还提供了比<CODE>make</CODE>还强大的工具--常用的automake自动创建和autoconf自动设置包。带auto的词听来总是很舒服,就好象是关于应用程序设计的东西可以又快又轻易的完成,实际正是这样。</P><P>自动创建的目的一般是从你必须为你的项目书写的文件<CODE>Makefile.am</CODE>创建一个所谓的<CODE>Makefile.in</CODE>文件。<CODE>Makefile.am</CODE>文件由宏组成,它们可被翻译并可降低make的复杂度,所以<CODE>Makefile.am</CODE>文件可以比最终的<CODE>Makefile</CODE>更安全、更快速的编写完成。</P><P>那么,是什么最终为我创建了Makefile文件呢?是autoconf自动配置。自动配置要求项目拥有几个宏文件。那是那些由automake和一个叫做<CODE>configure.in</CODE>的文件创建的Makefile.in的文件,也包括宏。因此,Makefile.am和.in's都包含了宏,它决定了创建软件的方式:源文件的编译方式,哪些文件属于这个软件包,以及最终的二进制或?进制文件在创建后用的名字。在另一方面,Configure.in则包含的宏则决定最终的配置--外壳在配置被执行的系统上将做何种检测。那可以是,例如Compilercommand命令最终二进制将被连接所需的库,项目所需的包含文件及其位置。</P><P>例如,你想写一个KDE应用。在你编写完资源代码以后,你想把你的程序发布到用户社区,而每一个用户都必须在自己的机子上编译这个二进制资源。那么你就需要写一个包含编译应用所需的宏的Configure.in文件。不论Qt库是否安装,那一个宏最终在系统上展开成一个check,检测Qt头文件,KDE-libraries和头部等等。</P><P><B>总结:</B> 为创建一个在不同的Unix-OS和其他机子上都可运行的GNU-编译应用,你需要这样做:</P><P><OL><LI> 为你的应用写下代码资源</LI><LI> 为每个子目录编写Makefile.am,包括你的项目的主要项目目录。</LI><LI>编写放于主项目目录的configure.in文件,包含说明系统要求的宏。</LI><LI> 运行 automake</LI><LI> 运行 autoconf</LI></OL></P><P>现在主要的工作都已完成,"自动创建"建立了Makefile.in,autoconf启动了configure.in并生成一个可执行的,称为<CODE>configure</CODE>的外壳脚本。你所有接下来必须完成的事就是用<CODE>.</CODE>configure/执行它,脚本会运行你选中的checks。最后会生成一个Makefiles,允许"创建"的最终执行。它会运行所有的Makefiles文件,然后你就完成了。</P><P>看起来为写一个小程序,花费的人力可不少,该学的也不少,特别是如何编写正确的宏。但仅仅是你提供在几乎所有的Unix系统上都可运行的应用这一事实本身,迟早也是值得你的这些努力的。最后,你只为你的应用做一次这样的工作,万一你的项目的文件有所增加,你只需往宏里加入文件就可以了。</P><P>现在,Kdevelop究竟有多支持这种类型的应用程序开发,而对程序员来说这究竟又有多复杂呢?这里有个好消息是你甚至无须知道关于宏和scripts,的任何东西。所有细节问题都已隐藏,使用起来轻松自如。因此由GNU工具都以对用户有好的方式创建应用:</P><P>只需根据你的应用的需求选择,用KappWizard创建你的应用--那可以是一个纯C++最终应用或某种使用Qt或Qt/KDE的GUI库的程序。所有工作自动完成,而且你的项目已经包含由GDU工具和配置脚本的自动执行创建的Makefiles。</P><P>就是这样--你准备扩展你的项目资源,可以通过增加classes类,对话,翻译或文档,这些都是自动化的。只需集中精力去做开发者的真正工作,那是为最终你想建立的应用程序编制功能的。在大多数情况下,在使用Kdevelop时,你很可能都不会和<Makefiles打交道。</P><H2><A NAME="Debugging"></A> <A NAME="ss3.4">3.4</A> <A HREF="kdevelop-manual.html#toc3.4">调试</A></H2><P>以下这一、节会讲到一个开发人员广泛使用的术语:调试。它的意思是,虽然你的Compiler会生成最终的应用,你的应用可能无法运行或在执行时由于代码中所谓的"臭虫而崩溃。由这种昆虫名来描述的程序错误的由来可追溯到计算机的历史;最初引起机器崩溃的错误中,有一个并非是malfunction--臭虫是在计算机内部而引起机器瘫痪的。因此,第一眼无法立即探测到的错误就被叫做"臭虫"。所以"debugging"调试的意思就是除去不该有的臭虫。现在,你并不需要真正猎杀它们,假设今天的计算机设计了某种外部保护,可以把臭虫排除在外。臭虫一定是在代码中被发现,大多数在完成一个程序的执行时会弹出信息框"节段错误"。GNU还提供另一个叫做<CODE>gdb</CODE>的工具,即GNU调试器。这一终端程序允许监测程序的内部参数值和利用在代码中设置断点来观察程序的逐步执行。Gdb在每次程序在执行中遇到断点时即中断程序的执行。但和大多数其他工具不同,调试器是由另一个程序控制的,该程序为它提供前端,允许轻松观测其参数值,及在代码中设置断点。</P><P>为此,你的项目的应用是由debugging调试的Compiler编译选项缺省创建的,因而在可执行文件中存储另外的数据,以允许代码中参数值和路线的定位。作为gdb第三方的前端,Kdevelop使用了KDbg,即Kde调试器。要调试你的程序,你只需从建立--菜单中选择"调试",或按下由上面有幅眼镜的轮子来表示的相关工具按钮,以表明你西哪个检测程序的执行即可。</P><P>然后Kdevelop会打开Tools-window窗口并用KDbg启动你的应用。KDbg界面会出现在Tools-window窗口内部 ,允许你象在外部启动它一样的使用它。</P><P>总的来说,以上步骤很清楚的说明了程序员在开始写他自己的应用时,必须执行的某些步骤的必要性,并阐述了基于所有项目的一般观点。我们还解释了Kdevelop为一个开发者的工作所起的作用,及它是如何支持为UNIX编程提供简易途径这一想法的。如果想知道关于GNU工具的作用和目的的更多信息,请阅读随之提供的文档,一般可以通过<CODE>man</CODE>命令或在KDE帮助的"系统GNU信息内容"一节得到。</P><HR><A HREF="kdevelop-manual-4.html">Next</A><A HREF="kdevelop-manual-2.html">Previous</A><A HREF="kdevelop-manual.html#toc3">Contents</A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -