在Eclipse中开发CC++项⽬
摘要:通过本⽂你将获得如何在Eclipse平台上开发C/C++项⽬的总体认识。虽然Eclipse主要被⽤来开发Java项⽬,但它的框架使得它很容易实现对其他开发语⾔的⽀持。在这篇⽂章⾥,你将学会如何使⽤CDT(C/C++ Development Toolkit),⼀个在Eclipse平台上最适⽤的C/C++⼯具包。
C/C++语⾔是世界上最流⾏的程序开发语⾔,所以Eclipse提供对C/C++语⾔的⽀持也就不⾜为奇了。由于Eclipse只是为开发⼯具提供⼀个框架,所以它必须借助外部插件的形式实现对C/C++语⾔的间接⽀持。这篇⽂章告诉你如何使⽤CDT,⼀个⽤于Eclipse平台的C/C++开发的插件组。CDT项⽬(见本⽂后⾯的Resource部分)的⽬标是为Eclipse平台提供⼀个完全意义上的C/C++集成开发环境。虽然整个项⽬专注
于Linux平台,但实际上,在那些提供了GNU开发⼯具的平台上,CDT都可以运⾏得很好,包括Win32(Win 95/98/Me/NT/2000/XP),QNX Neutrino和Solaris平台等。
CDT是⼀个开源项⽬(基于CPL),纯粹由Java语⾔实现。这些插件在Eclipse⼯作区中添加了⼀个C/C++开发视⾓,包括⼀系列的视
图(Views)和向导(Wizards),以及⼀些⾼级的编辑和调试⽀持等,以实现对C/C++开发的全⾯⽀持。
由于其复杂性,CDT被分割为若⼲个组件,每⼀个组件都以⼀个独⽴插件的形式存在。每个组件都是⼀个独⽴的项⽬,有⾃⼰的提交者、臭⾍分类和邮件列表等。但是,每个组件都是CDT正常运⾏不可或缺的。下⾯是⼀个完整的CDT插件列表:
l Primary CDT plug-in: 为CDT插件提供⼀个框架;
l CDT Feature Eclipse: CDT的特性组件;
l CDT Core: 提供核⼼模型、CDOM和核⼼组件;
l CDT UI: CDT的核⼼UI、视图、编辑器、向导;
l CDT Launch: 为外部⼯具诸如编译器和调试器提供Launch机制;
l CDT Debug Core: 提供调试功能;
l CDT Debug UI: 为CDT调试编辑器、视图和向导提供⽤户界⾯;
l CDT Debug MI: ⽤于与MI兼容的调试器的应⽤程序连接器(Connector)。
现在,让我们看看在⼀个真正的应⽤程序中如何使⽤这些组件。图1显⽰了⼀个在Eclipse中的C/C++项
⽬:
图1 使⽤CDT插件在Eclipse中编辑C/C++项⽬
安装和运⾏CDT
在你安装和运⾏CDT之前,请确保你有可⽤的GNU的C编译器(GCC)以及配套⼯具(make, binutils和GDB)。如果你运⾏在Linux平台,则只需使⽤适合于你的Linux发布版的PM(Package Manager, 如果是RedHat Linux则为RPM)安装开发包即可。如果是Windows,则需安
装Cygwin(见本⽂后⾯的Resource部分),Cygwin在Windows操作系统上模拟了⼀个Unix开发环境,包括GCC以及⼀些必要的开发⼯具,以及automake和GDB等。Cygwin是构建在cygwin1.dll的基础之上的。Cygwin的⼀种替代品是Minimalist GNU for Windows (MinGW,见本⽂后⾯的Resource部分)。它是⼀组可免费获取的,⾃由分发的Windows标准的头⽂件和导⼊库,并与GNU⼯具集结合在⼀起,使得你可以不依赖第三⽅DLL开发本机Windows应⽤程序。如果你想开发符合POSIX标准的Windows应⽤程序,MinGW是你最好的选择。MinGW甚⾄可以在安装了Cygwin的环境中⼯作。如果是Solaris和QNX平台,则你需要在Internet上下载相应平台的GCC、GMake和GDB等开发⼯具(见本⽂后⾯的Resource部分)。
在这⾥,我们假定你已经安装了正确的Java SDK/JRE和Eclipse的Platform SDK并且它们可以正常⼯作。CDT有稳定的发布版(Stable Release)和每⽇构建版本(Nightly Build),每⽇构建版本没有经过全⾯的系统的测试,但是它包含更多的特性以及对既有Bugs的修正。在安装前,⾸先检查本地系统是否安装了旧版本的CDT,如果有,则需要彻底删除它。由于CDT没有提供卸载程序(Uninstaller),所以你需要⼿⼯完成这项⼯作。为了检查CDT的旧版本是否存在,⾸先,到CDT插件在硬盘中的驻留位置eclipse/plugins,然后删除所有
以lipse.cdt开头的⽂件夹。你需要做的最后⼀件事情就是删除CDT元数据⽬录或者是从workspace/.metadata/.plugins和features⽬录下删除.eclipse.cdt.*。
下⼀步就是下载运⾏CDT所必需的⼆进制⽂件。注意选择适合你的操作系统的正确的CDT版本,不要弄错了。不幸的是,虽然CDT是
⽤Java语⾔实现的,但它并不是平台⽆关的。然后,我们把下载到的安装包解压到⼀个临时⽬录下,将⾥⾯所有的插件⽬录拷贝
到Eclipse的插件⽬录中,另外,你还需要将Features⽬录也拷贝到Eclipse的Features⽬录下,最后重启Eclipse。在Eclipse重新启动后,更新管理器(Update Manager)会告诉你它发现了更新并要求你确认。完成上述步骤后你会发现有两个新的⼯程类型可⽤了: C和C++。
创建⼀个新的项⽬
在Eclipse中安装CDT之后,选择File | New | Project,你会发现有三种新类型的Project可⽤: C ("Standard C Make Project")、C++ ("Standard C++ Make Project")和"Convert to C or C++ Projects"。让我们从"Standard C Make Project"开始为你的⼯程创建源代码⽂件。
在C/C++ Project视图中,右键弹出环境菜单并选择New | Simple | File,键⼊⽂件名并保存。你可能需要重复这个步骤多次以建⽴多个头⽂件和实现⽂件。当然,最后⼀个⽂件是必不可少的——Makefile,它被GMake⽤来产⽣⼆进制可执⾏⽂件。使⽤⼀般的GMake语法编
辑Makefile(见本⽂后⾯的Resource部分),记住续⾏时使⽤Tab键⽽不是空格字符。
更多的时候,你会将⼀个已存在的源⽂件导⼊到Eclipse中(如图2所⽰)。CDT提供了⼀种简便的⽅法,使得你可以利⽤导⼊向导(Import Wizard)将⼀个⽂件系统⽬录中的源⽂件添加到⼯作台中。选择File | Import | File System,单击"Next"按钮,然后选中包含即将被导⼊的源⽂件的⽬录,单击"Select All"即可选中该⽬录下的所有代码⽂件,然后你可以遍历⽂件列表,把你不希望添加到⼯程中的代码⽂件去掉。最后,指定⼀个⼯作台项⽬或者⽬录作为这些⽂件导⼊的⽬标位置。你可以通过将代码⽂件从⽂件系统拖动到导航视图(Navigator View)的⽅式完成同样的动作,复制/粘贴亦可。
图2 将已存在的代码⽂件导⼊到CDT项⽬中
CDT集成开发环境的关键特性
CDT集成开发环境是构建在CDT UI插件提供的⼀个通⽤的、可扩展的编辑器基础之上的。这个模块现在仍然在不断开发中,但不管怎样,有些重要特性缺失了,例如类浏览器(Class Browser)和语⾔⽂档浏览器(Language Documentation Browser)。CDT集成开发环境的主要特性如下:
l语法⾼亮
CDT集成开发环境能识别C/C++语法,提供语法⾼亮功能,并提供可配置的代码着⾊和代码格式化⽅案。
图3 编译失败后的语法错误⾼亮显⽰
l Outline
Outline窗⼝对出现在源代码中的过程、变量、声明和函数提供了⼀个快速视图。利⽤Outline窗⼝你可以很轻松的跳转到正确的引⽤点,甚⾄在整个项⽬的源代码中搜索。
l代码助⼿
代码⾃动补齐特性与我们在Borland C++ Builder和Microsoft Visual Studio中见到的⼀样。它还可以使⽤代码模板,避免⼀些很低级的语法错误。
图4 代码助⼿有助于正确的语法使⽤
l代码模板
作为代码助⼿特性之⼀的代码模板,提供了⼀些预定义的C/C++语法结构。你也可以定义你⾃⼰的语法结构,⽐如在代码⽂件中加⼊"作者"和"⽇期"等关键字。选择Window | Preferences | C/C++ | Code Templates,你可以添加模板或浏览整个模板列表。代码模板亦可通
过XML⽂件的形式导⼊和导出。
图5 预定义的C/C++代码模板
l代码修改历史
即使你没有安装诸如CVS等源代码管理⼯具,你仍然可以跟踪代码的本地修改记录。右键单击选中的⽂件并在环境菜单中选择Compare with | Local History ...
图6 通过"Local History"功能检查本地修改记录
编译和运⾏
CDT为设置编译选项提供了⼀种便捷的⽅式。CDT依赖三个GNU⼯具: GCC,GDB和GMake。因此,鉴于CDT在编译⽅⾯
对GCC和GMake的依赖性、以及在调试⽅⾯对GDB的依赖性,请确保在你的平台上这三个应⽤程序都是可⽤的。⼤多数Linux(更⼀般的说,类POSIX)源代码包都使⽤autoconf脚本来检查编译环境,所以你必须运⾏configure命令,这个命令在你的项⽬得以编译之前建⽴⼀个"Makefile"⽂件。CDT并没有提供⼀种编辑autoconf脚本的⽅法,所以你必须⼿⼯创建;尽管如此,在编译之前使⽤configure命令设置编译选项仍然是必需的。
如果你通过make命令来编译⼀个项⽬,那么默认设置已经⾜够;但是如果你使⽤较为复杂的⽅法,你必须⾸先在编译命令输⼊框中输⼊正确的命令(⽐如make -f make_it_all),然后,在C/C++ project视图中,选择C/C++ Project,右键弹出环境菜单并选择Rebuild Project。所有的由GMake、编译器和链接器产⽣的输出信息都将被重定向到Console窗⼝中:
图7 编译过程中的Console窗⼝
编译成功后,你可能迫切的想运⾏你的程序。所有与运⾏和调试相关的选项都在Run主菜单中。不过,
提供给"运⾏"的选项必须事先指定,你可以通过选择Run | Run…做到这⼀点,该菜单项提供了程序在执⾏时的各种配置选项。例如,你可以为执⾏测试版本和最终版本提供不同的运⾏配置。另外,你可以设置传递给应⽤程序的参数,或者环境变量。选择Run | Debug…可以配置调试选项,例如你希望使⽤的调试器(GNU GDB或者是Cygwin GDB)。图8展⽰了⼀个项⽬的运⾏配置:
图8 为你的项⽬创建⼀个运⾏配置
在C/C++ Project视图中,选中你的项⽬,右键弹出环境菜单并选择Properties,在Build Settings选项卡中,你会发现更⼀般的⽤于⽣成应⽤程序的选项,这些选项定义了编译器在遇到错误⽽停⽌时Eclipse的⾏为。
调试C/C++⼯程
CDT扩展了Eclipse的调试功能,使Eclipse得以调试C/C++程序。在调试视图中,你可以对处于运⾏或者调试状态的程序进⾏管理。为了调试⼀个程序,只需简单的切换到调试视图,然后你就可以在代码中设置(或者在程序执⾏的任何时候改变)断点(Breakpoints)/观察
点(Watchpoints),以及追踪变量及寄存器的值等等。调试视图显⽰了当前被调试线程的栈结构,并将每个线程视为⼀个节点,从⽽将被调试进程以⼀个树状结构显⽰出来。
Eclipse通过CDT Debug MI插件实现对MI(Machine Interface)兼容的调试器的⽀持。但确切的说,什么是MI调试器?传统观点认为,第三
⽅GUI调试器如ddd和xxgdb(见本⽂后⾯的Resource部分)在具体实现上都依赖于GDB的命令⾏输出界⾯。不幸的是,这个界⾯被证明是很不稳定的。GDB/MI提供了⼀个新的⾯向机器(Machine Oriented)的界⾯,能够更好的适应那些直接解析GDB输出的程序。
结论
CDT提供了⼀个强⼤的插件组合以帮助你在Eclipse中开发C/C++程序。虽然CDT仍然在不断开发中,但你已经可以从中获得不少益处。Resource
l加⼊到Eclipse平台社区并从下载Eclipse。Eclipse平台的源代码是基于CPL的。在,你会发现关于Eclipse项⽬的术语和描述,以及⼀些技术性⽂章和新闻组等。Eclipse平台⽩⽪书是对Eclipse组件和功能的详细介绍;
l从上下载的各个组件;
l在的中你可以查看关于CDT插件的技术性讨论和问答;
l通过为CDT的各个组件⽽创建的,开发者可以参加有关C/C++ IDE实现的讨论;
l CDT项⽬使⽤bugzilla作为⾃⼰的臭⾍和功能需求跟踪系统,提交⼀个臭⾍或者功能需求只需在Eclipse上填写⼀份表单;
l由Greg Adams和Marc Erickson撰写的是对Eclipse及其⼯作原理的介绍;
l欲了解如何在Eclipse中开发应⽤程序,参考David Gallardo撰写的;
l如果你对开发你⾃⼰的Eclipse插件感兴趣,参考David Gallardo撰写的;
l从Red Hat上下载
l从上下载
l从上学习更多有关
l从上下载GUI调试器;
l下载GUI调试器;
l访问可以获得被检验过的可以作为WebSphere Studio Software插件的⽬录;
怎么把项目导入到eclipse
l了解IBM WebSphere Studio⼯具的扩展以获得如何使⽤它们的⼀些帮助信息。由于IBM WebSphere Studio⼯具是构建在WebSphere Studio⼯作台基础之上的,⽽WebSphere Studio⼯作台⼜是以Eclipse框架为基础的,所以你可以很容易的使⽤Eclipse帮助扩展特性扩展产品⽂档。参见⽂章"";
l从IBM developerworks上到更多有关
关于作者
Pawel Leszek,作者,独⽴软件顾问,专攻Linux/Win/Mac OS系统架构和管理的作家。他在操作系统、程序设计语⾔、⽹络协议等领域具有丰富的经验,特别是Lotus Domino和DB2。Pawel还是Linuxworld的⼀系列⽂章作者和PC World波兰版的Linux专栏作家。Pawel现与妻⼦及可爱的⼩⼥⼉居住在Warsaw。任何问题或者建议请发邮件到。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。