用Eclipse平台进行C/C++开发

                                     

我们将概述如何在 C/C++ 开发项目中使用 Eclipse 平台。尽管 Eclipse 主要是一个 Java 开发环境,但其体系结构确保了对其它编程语言的支持。在本文中,您将学习如何使用 C/C++ 开发工具箱(C/C++ Development Toolkit,CDT),它是可用于 Eclipse 的最佳 C/C++ 工具箱。

C和C++语言都是世界上最流行且使用最普遍的编程语言,因此Eclipse平台(EclipsePlatform)提供对C/C++开发的支持一点都不足为奇。因为Eclipse平台只是用于开发者工具的一个框架,它不直接支持C/C++;它使用外部插件来提供支持。本文将向您演示如何使用CDT—用于C/C++开发的一组插件。CDT项目致力于为Eclipse平台提供功能完全的C/C++集成开发环境(IntegratedDevelopmentEnvironment,IDE)。虽然该项目的重点是Linux,但它在可使用GNU开发者工具的所有环境(包括Win32(Win95/98/Me/NT/2000/XP)、QNXNeutrino和Solaris平台)中都能工作。

CDT是完全用Java实现的开放源码项目(根据CommonPublicLicense特许的),它作为EclipseSDK平台的一组插件。这些插件将C/C++透视图添加到Eclipse工作台(Workbench)中,现在后者可以用许多视图和向导以及高级编辑和调试支持来支持C/C++开发。

由于其复杂性,CDT被分成几个组件,它们都采用独立插件的形式。每个组件都作为一个独立自主的项目进行运作,有它自己的一组提交者、错误类别和邮件列表。但是,所有插件都是CDT正常工作所必需的。下面是CDT插件/组件的完整列表:

主CDT插件(PrimaryCDTplug-in)是“框架”CDT插件。CDT功能Eclipse(CDTFeatureEclipse)是CDT功能组件(FeatureComponent)。CDT核心(CDTCore)提供了核心模型(CoreModel)、CDOM和核心组件(CoreComponent)。CDTUI是核心UI、视图、编辑器和向导。CDT启动(CDTLaunch)为诸如编译器和调试器之类的外部工具提供了启动机制。CDT调试核心(CDTDebugCore)提供了调试功能。CDT调试UI(CDTDebugUI)为CDT调试编辑器、视图和向导提供了用户界面。CDT调试MI(CDTDebugMI)是用于与MI兼容的调试器的应用程序连接器。

现在,让我们研究一下如何在实际应用程序中使用这些组件。图1显示了Eclipse中的C/C++项目:

图1.在带有CDT插件的Eclipse中编辑C/C++项目

安装和运行CDT

在下载和安装CDT之前,首先必需确保GNUC编译器(GNUCcompiler,GCC)以及所有附带的工具(make、binutil和GDB)都是可用的。如果正在运行Linux,只要通过使用适用于您分发版的软件包管理器来安装开发软件包。在Windows平台上,将需要安装Cygwin工具箱。Cygwin是用于Windows的类UNIX环境,它包括GCC移植以及所有必需的开发工具,包括automake和GNU调试器(GNUDebugger,GDB)。Cygwin是在cygwin1.dll库基础上构建的。Cygwin的备用解决方案是MinimalistGNUforWindows(MinGW)。该工具是一组可免费获取、自由分发的特定于Windows的头文件和导入库,这些头文件和导入库与GNU工具集(它们允许您生成不依赖于任何第三方DLL的本机Windows程序)结合在一起。如果您想要创建与POSIX兼容的Windows应用程序,那么MinGW是最佳选择。MinGW甚至可以在Cygwin安装之上工作。Solaris和QNX要求您从因特网下载并安装其特定的GCC、GNUMakebinutils和GDB移植。

假设您安装了适当的JavaSDK/JRE和Eclipse平台SDK,并且它们都正常运行。CDT以两种“方式”可用:稳定的发行版和试运行版(nightlybuild)。试运行版未经完全测试,但它们提供了更多的功能并改正了当前错误。安装之前,请检查磁盘上是否存在先前版本的CDT,如果存在,请确保完全除去它。因为CDT没有可用的卸载程序,所以需要手工除去它。为了检查先前版本是否存在,转至CDT插件所驻留的目录:eclipse/plugins。接着,除去所有以org.eclipse.cdt名称开头的目录。需要做的最后一件事情是从workspace/.metadata/.plugins和features除去CDT元数据目录or.eclipse.cdt.*。

下一步是下载CDT二进制文件。注意:请下载适合于您操作系统的正确的CDT。遗憾的是,即使CDT是用Java编写的,它也不是与平台无关的。接着,将归档文件解压到临时目录中,从临时目录将所有插件目录内容都移到Eclipseplugins子目录。还需要将features目录内容移到Eclipsefeatures子目录中。现在,重新启动Eclipse。Eclipse再次启动之后,更新管理器将告诉您它发现了更改并询问您是否确认这些更改。现在您将能够看到两个可用的新项目:C和C++。

创建新项目

在Eclipse中安装CDT之后,浏览至File=>New=>Project,在那里,您将发现三个新的可用项目类型:C(“StandardCMakeProject”)、C++(“StandardC++MakeProject”)和“ConverttoCorC++Projects”。从“StandardMakeC++Project”开始,为您的项目创建源代码文件。在C/C++Projects视图中,单击鼠标右键,然后选择New=>Simple=>File。命名您的文件并保存它。您可能会用这种方法创建许多头文件以及C/C++实现代码文件。最后当然是Makefile,GNUMake将使用它来构建二进制文件。对该Makefile使用常见的GNUmake语法(请参阅参考资料)。请记住:Makefile要求您使用Tab字符而不是空格来产生缩进行。

您通常会将现有的源代码导入Eclipse(请参阅图2)。CDT为执行这一操作提供了一种便捷的方法:即使用Import向导,将文件从文件系统目录复制到工作台。转至主菜单栏,选择File=>Import=>FileSystem。单击Next,打开源目录,选择您想要添加文件的目录。单击SelectAll以选择目录中的所有资源,然后从头到尾检查,取消选择您不打算添加的那些资源。指定将作为导入目标的工作台项目或文件夹。还可以通过从文件系统拖动文件夹和文件并将它们放入Navigator视图中,或者通过复制和粘贴来导入文件夹和文件。

图2.将现有的源代码导入CDT项目

关键的CDTIDE功能

CDTIDE是在CDTUI插件所提供的通用可扩展编辑器基础上构建的。然而,该模块仍处于开发阶段,所以它仍缺少一些重要的实用程序,如类浏览器或语言文档浏览器。CDTIDE的主要功能是:

语法突出显示:CDTIDE识别C/C++语法,并为语法突出显示提供了完全可配置的代码着色以及代码格式化功能:

图3.不成功的编译之后突出显示的语法错误标记

提纲:Outline窗口模块提供了有关出现在源代码中的过程、变量、声明以及函数的快速视图。利用outline,您可以方便地找到源代码中的适当引用,或者甚至搜索所有项目源代码。代码辅助:这个代码完成功能类似于可在BorlandC++Builder或MSVisualStudio中找到的功能。它使用了代码模板,并且只有助于避免愚蠢的语法错误:

图4.有助于使用正确的语言语法的代码辅助功能

代码模板:由代码辅助功能使用的代码模板是标准C/C++语言语法结构的定义。您也可以定义自己的代码模板来扩展您自己的快捷键,如用于author或date关键字的快捷键。在Window=>Preferences=>C/C++=>CodeTemplates中,可以添加新模板并查看完整的模板列表。也可以将模板作为XML文件导出和导入。

图5.预定义的C/C++代码模板

代码历史记录:即使您没有使用CVS或其它源代码版本管理软件,也可以跟踪项目源代码中的本地更改。在选择的文件上单击鼠标右键,从上下文菜单选择CompareWith=>LocalHistory...:

图6.用LocalHistory功能检查源代码中的更改

构建并运行项目

CDT提供了一种设置项目构建选项的简单方法。CDT依赖于三个GNU工具:GCC、GDB和Make。因此,对用于调试的GDB或用于编译的GCC和Make的依赖要求这些应用程序可用于用户想要使用的平台。大多数Linux(通常和类POSIX)源代码软件包使用autoconf脚本来检查构建环境,所以您必需运行configure命令,该命令在编译之前创建“Makefile”。CDT没有提供编辑autoconf脚本的方法,所以必需手工编写它们;然而,您可以配置构建选项以在编译之前调用configure命令。

如果通过调用make命令来构建项目,那么缺省设置没问题,但是,如果使用一种更复杂的方法进行构建,则必需在BuildCommand文本框中输入适当的命令(例如,make-fmake_it_all)。接下来,在C/C++Projects视图中,选择C/C++project,然后单击鼠标右键并选择RebuildProject。所有来自make、编译器和链接程序的编译消息都被重定向到控制台窗口:

图7.带编译器输出的控制台窗口

编译成功之后,您或许想要运行您的应用程序。所有用于运行和调试的选项都位于主Eclipse菜单的Run菜单下。然而,必须在早期定义用于运行项目的选项。可以通过转至主菜单(在那里,有用于运行应用程序的不同概要文件)中的Run...选项来完成这一步;例如,可以将一个概要文件用于测试目的,而将另一个概要文件用于运行最终版本。另外,可以定义希望要传递给应用程序的参数,或者可以设置环境变量。其它选项用于设置调试选项,例如使用哪个调试器(GNUGDB或CygwinGDB)。图8显示了正在为项目创建运行概要文件(runprofile)。

图8.为项目创建运行概要文件

当进入C/C++Projects视图,选择您的项目,单击鼠标右键并在BuildSettings选项卡上选择Properties之后,就可以使用更多的用于构建项目的常用选项。这些选项主要影响因遇到编译错误而使构建停止时所发生的情况。

调试C/C++项目

CDT扩展了标准的EclipseDebug视图,使之具备了调试C/C++代码的功能。Debug视图允许您在工作台中管理程序的调试或运行。要开始调试当前项目,只要切换到Debug视图,您将能够在代码中设置(并在执行过程中随时更改)断点/监测点并跟踪变量和寄存器。Debug视图显示正在调试的每个目标的暂挂线程的堆栈框架。程序中的每个线程都作为树中的一个节点出现,Debug视图显示正在运行的每个目标的进程。

Eclipse 通过 CDT 调试 MI(CDT Debug MI)插件(其组件之一)支持与机器接口(Machine Interface,MI)兼容的调试器。但 MI 调试器究竟是什么呢?通常情况下,象 ddd 和 xxgdb之类的第三方 GUI 调试器在实现调试功能时都依赖于 GDB 的命令行接口(Command Line Interface,CLI)。遗憾的是,经过证实该接口非常不可靠。GDB/MI 提供了一种新的面向机器的接口,它非常适合于想要直接解析 GDB 输出的程序

转载至:http://liangqiushi.bokee.com/4945350.html

相关推荐