C ?C++ 语言都是世界上最行且用最普遍的编E语aQ因?Eclipse q_QEclipse PlatformQ提供对 C/C++ 开发的支持一炚w不为奇。因?Eclipse q_只是用于开发者工L一个框Ӟ它不直接支持 C/C++Q它使用外部插g来提供支持。本文将向您演示如何使用 CDT ?用于 C/C++ 开发的一l插件。CDT 目Q有关链接,请参阅本文后面的 参考资?/font>一节)致力于ؓ Eclipse q_提供功能完全?C/C++ 集成开发环境(Integrated Development EnvironmentQIDEQ。虽然该目的重Ҏ LinuxQ但它在可?GNU 开发者工L所有环境(包括 Win32QWin 95/98/Me/NT/2000/XPQ、QNX Neutrino ?Solaris q_Q中都能工作?
CDT 是完全用 Java 实现的开放源码项目(Ҏ Common Public License 特许的)Q它作ؓ Eclipse SDK q_的一l插件。这些插件将 C/C++ 透视图添加到 Eclipse 工作収ͼWorkbenchQ中Q现在后者可以用许多视图和向g及高U编辑和调试支持来支?C/C++ 开发?/p>
׃其复杂性,CDT 被分成几个组Ӟ它们都采用独立插件的形式。每个组仉作ؓ一个独立自ȝ目q行q作Q有它自q一l提交者、错误类别和邮g列表。但是,所有插仉?CDT 正常工作所必需的。下面是 CDT 插gQ组件的完整列表Q?/p>
- ?CDT 插gQPrimary CDT plug-inQ?/strong>?#8220;框架”CDT 插g?
- CDT 功能 EclipseQCDT Feature EclipseQ?/strong>?CDT 功能lgQFeature ComponentQ?
- CDT 核心QCDT CoreQ?/strong>提供了核心模型(Core ModelQ、CDOM 和核心组ӞCore ComponentQ?
- CDT UI是核?UI、视图、编辑器和向对{?
- CDT 启动QCDT LaunchQ?/strong>如编译器和调试器之类的外部工h供了启动机制?
- CDT 调试核心QCDT Debug CoreQ?/strong>提供了调试功能?
- CDT 调试 UIQCDT Debug UIQ?/strong>?CDT 调试~辑器、视囑֒向导提供了用L面?
- CDT 调试 MIQCDT Debug MIQ?/strong>是用于与 MI 兼容的调试器的应用程序连接器?
- CDT 功能 EclipseQCDT Feature EclipseQ?/strong>?CDT 功能lgQFeature ComponentQ?
现在Q让我们研究一下如何在实际应用E序中用这些组件。图 1 昄?Eclipse 中的 C/C++ 目Q?/p>
?1. 在带?CDT 插g?Eclipse 中编?C/C++ 目
在下载和安装 CDT 之前Q首先必需保 GNU C ~译器(GNU C compilerQGCCQ以及所有附带的工具Qmake、binutil ?GDBQ都是可用的。如果正在运?LinuxQ只要通过使用适用于您分发版的软g包管理器来安装开发Y件包。在 Windowsq_上,需要安?Cygwin 工具(请参?参考资?/font>以获得链接)。Cygwin 是用?Windows 的类 UNIX 环境Q它包括 GCC UL以及所有必需的开发工P包括 automake ?GNU 调试器(GNU DebuggerQGDBQ。Cygwin 是在 cygwin1.dll
库基上构建的。Cygwin 的备用解x案是 Minimalist GNU for WindowsQMinGWQ(请参?参考资?/font>以获得链接)。该工具是一l可免费获取、自由分发的特定?Windows 的头文g和导入库Q这些头文g和导入库?GNU 工具集(它们允许您生成不依赖于Q何第三方 DLL 的本?Windows E序Q结合在一赗如果您惌创徏?POSIX 兼容?Windows 应用E序Q那?MinGW 是最佳选择。MinGW 甚至可以?Cygwin 安装之上工作?Solaris?QNX要求您从因特|下载ƈ安装其特定的 GCC、GNU Make binutils ?GDB ULQ请参阅 参考资?/font>以获得链接)?
假设您安装了适当?Java SDK/JRE ?Eclipse q_ SDKQƈ且它们都正常q行。CDT 以两U?#8220;方式”可用Q稳定的发行版和试运行版Qnightly buildQ。试q行版未l完全测试,但它们提供了更多的功能ƈҎ了当前错误。安装之前,h查磁盘上是否存在先前版本?CDTQ如果存在,L保完全除d。因?CDT 没有可用的卸载程序,所以需要手工除d。ؓ了检查先前版本是否存在,转至 CDT 插g所ȝ的目录: eclipse/plugins
。接着Q除L有以 org.eclipse.cdt
名称开头的目录。需要做的最后一件事情是?workspace/.metadata/.plugins
?features
除去 CDT 元数据目?or.eclipse.cdt.*
?
下一步是下蝲 CDT 二进制文件。注意:请下载适合于您操作pȝ的正的 CDT。遗憄是,即 CDT 是用 Java ~写的,它也不是与^台无关的。接着Q将归档文g解压C时目录中Q从临时目录所有插件目录内定wUd Eclipse plugins
子目录。还需要将 features
目录内容Ud Eclipse features
子目录中。现在,重新启动 Eclipse。Eclipse 再次启动之后Q更新管理器告诉您它发C更改q询问您是否认q些更改。现在您能够看C个可用的新项目:C ?C++?
?Eclipse 中安?CDT 之后Q浏览至 File => New => ProjectQ在那里Q您发C个新的可用项目类型:CQ?#8220;Standard C Make Project”Q、C++Q?#8220;Standard C++ Make Project”Q和“Convert to C or C++ Projects”。从“Standard Make C++ Project”开始,为您的项目创建源代码文g。在 C/C++ Projects 视图中,单击鼠标右键Q然后选择 New => Simple => File。命名您的文件ƈ保存它。您可能会用q种Ҏ创徏许多头文件以?C/C++ 实现代码文g。最后当然是 MakefileQGNU Make 用它来构Zq制文g。对?Makefile 使用常见?GNU make 语法Q请参阅 参考资?/font>Q。请CQMakefile 要求您?Tab 字符而不是空格来产生~进行?
您通常会将现有的源代码导入 EclipseQ请参阅?2Q。CDT 为执行这一操作提供了一U便LҎQ即使用 Import 向导Q将文g从文件系l目录复制到工作台。{至主菜单栏,选择 File => Import => File System。单?NextQ打开源目录,选择您想要添加文件的目录。单?Select All 以选择目录中的所有资源,然后从头到尾查,取消选择您不打算d的那些资源。指定将作ؓ导入目标的工作台目或文件夹。还可以通过从文件系l拖动文件夹和文件ƈ它们放?Navigator 视图中,或者通过复制和粘贴来导入文g夹和文g?
?2. 现有的源代码导?CDT 目

CDT IDE 是在 CDT UI 插g所提供的通用可扩展编辑器基础上构建的。然而,该模块仍处于开发阶D,所以它仍缺一些重要的实用E序Q如cL览器或语a文档览器。CDT IDE 的主要功能是Q?/p>
- 语法H出昄QCDT IDE 识别 C/C++ 语法Qƈ法突出显C提供了完全可配|的代码着色以及代码格式化功能Q?
?3. 不成功的~译之后H出昄的语法错误标?/font>
- 提纲QOutline H口模块提供了有兛_现在源代码中的过E、变量、声明以及函数的快速视图。利?outlineQ您可以方便地找到源代码中的适当引用Q或者甚x索所有项目源代码?
- 代码辅助Q这个代码完成功能类g可在 Borland C++ Builder ?MS Visual Studio 中找到的功能。它使用?代码模板Qƈ且只有助于避免愚蠢的语法错误Q?
?4. 有助于用正的语言语法的代码辅助功?/font>
- 代码模板Q由代码辅助功能使用的代码模板是标准 C/C++ 语言语法l构的定义。您也可以定义自q代码模板来扩展您自己的快捷键Q如用于
author
?date
关键字的快捷键。在 Window => Preferences => C/C++ => Code Templates 中,可以d新模板ƈ查看完整的模板列表。也可以模板作?XML 文g导出和导入?
- 代码历史记录Q即使您没有使用 CVS 或其它源代码版本理软gQ也可以跟踪目源代码中的本地更攏V在选择的文件上单击鼠标右键Q从上下文菜单选择 Compare With => Local History...Q?
?6. ?Local History 功能查源代码中的更改

CDT 提供了一U设|项目构建选项的简单方法。CDT 依赖于三?GNU 工具QGCC、GDB ?Make。因此,对用于调试的 GDB 或用于编译的 GCC ?Make 的依赖要求这些应用程序可用于用户惌使用的^台。大多数 LinuxQ通常和类 POSIXQ源代码软g包?autoconf 脚本来检查构建环境,所以您必需q行 configure
命oQ该命o在编译之前创?#8220;Makefile”。CDT 没有提供~辑 autoconf 脚本的方法,所以必需手工~写它们Q然而,您可以配|构建选项以在~译之前调用 configure
命o?
如果通过调用 make
命o来构建项目,那么~省讄没问题,但是Q如果用一U更复杂的方法进行构建,则必需?Build Command 文本框中输入适当的命令(例如Q?make -f make_it_all
Q。接下来Q在 C/C++ Projects 视图中,选择 C/C++ projectQ然后单击鼠标右键ƈ选择 Rebuild Project。所有来?make、编译器和链接程序的~译消息都被重定向到控制台窗口:
?7. 带编译器输出的控制台H口

~译成功之后Q您或许惌q行您的应用E序。所有用于运行和调试的选项都位于主 Eclipse 菜单?Run 菜单下。然而,必须在早期定义用于运行项目的选项。可以通过转至主菜单(在那里,有用于运行应用程序的不同概要文gQ中?Run... 选项来完成这一步;例如Q可以将一个概要文件用于测试目的,而将另一个概要文件用于运行最l版本。另外,可以定义希望要传递给应用E序的参敎ͼ或者可以设|环境变量。其它选项用于讄调试选项Q例如用哪个调试器QGNU GDB ?Cygwin GDBQ。图 8 昄了正在ؓ目创徏q行概要文gQrun profileQ?
?8. 为项目创行概要文?/font>
当进?C/C++ Projects 视图Q选择您的目Q单击鼠标右键ƈ?Build Settings 选项卡上选择 Properties 之后Q就可以使用更多的用于构建项目的常用选项。这些选项主要影响因遇到编译错误而构徏停止时所发生的情c?
CDT 扩展了标准的 Eclipse Debug 视图Q之具备了调试 C/C++ 代码的功能。Debug 视图允许您在工作C理E序的调试或q行。要开始调试当前项目,只要切换?Debug 视图Q您能够在代码中设|(q在执行q程中随时更改)断点Q监点q跟t变量和寄存器。Debug 视图昄正在调试的每个目标的暂挂U程的堆栈框架。程序中的每个线E都作ؓ树中的一个节点出玎ͼDebug 视图昄正在q行的每个目标的q程?
Eclipse 通过 CDT 调试 MIQCDT Debug MIQ插Ӟ其组件之一Q支持与机器接口QMachine InterfaceQMIQ兼容的调试器。但 MI 调试器究竟是什么呢Q通常情况下,?ddd ?xxgdbQ请参阅 参考资?/font>以获得链接)之类的第三方 GUI 调试器在实现调试功能旉依赖?GDB 的命令行接口QCommand Line InterfaceQCLIQ。遗憄是,l过证实该接口非怸可靠。GDB/MI 提供了一U新的面向机器的接口Q它非常适合于想要直接解?GDB 输出的程序?