我们将概述如何在 C/C++ 开发项目中使用 Eclipse 平台。尽管 Eclipse 主要是一个 Java 开发环境,但其体系结构确保了对其它编程语言的支持。在本文中,您将学习如何使用 C/C++ 开发工具箱(C/C++ Development Toolkit,CDT),它是可用于 Eclipse 的最佳 C/C++ 工具箱。 C 和 C++ 语言都是世界上最流行且使用最普遍的编程语言,因此 Eclipse 平台(Eclipse Platform)提供对 C/C++ 开发的支持一点都不足为奇。因为 Eclipse 平台只是用于开发者工具的一个框架,它不直接支持 C/C++;它使用外部插件来提供支持。本文将向您演示如何使用 CDT — 用于 C/C++ 开发的一组插件。CDT 项目致力于为 Eclipse 平台提供功能完全的 C/C++ 集成开发环境(Integrated Development Environment,IDE)。虽然该项目的重点是 Linux,但它在可使用 GNU 开发者工具的所有环境(包括 Win32(Win 95/98/Me/NT/2000/XP)、QNX Neutrino 和 Solaris 平台)中都能工作。 CDT 是完全用 Java 实现的开放源码项目(根据 Common Public License 特许的),它作为 Eclipse SDK 平台的一组插件。这些插件将 C/C++ 透视图添加到 Eclipse 工作台(Workbench)中,现在后者可以用许多视图和向导以及高级编辑和调试支持来支持 C/C++ 开发。 由于其复杂性,CDT 被分成几个组件,它们都采用独立插件的形式。每个组件都作为一个独立自主的项目进行运作,有它自己的一组提交者、错误类别和邮件列表。但是,所有插件都是 CDT 正常工作所必需的。下面是 CDT 插件/组件的完整列表: 现在,让我们研究一下如何在实际应用程序中使用这些组件。图 1 显示了 Eclipse 中的 C/C++ 项目: 图 1. 在带有 CDT 插件的 Eclipse 中编辑 C/C++ 项目 安装和运行 CDT 在下载和安装 CDT 之前,首先必需确保 GNU C 编译器(GNU C compiler,GCC)以及所有附带的工具(make、binutil 和 GDB)都是可用的。如果正在运行 Linux,只要通过使用适用于您分发版的软件包管理器来安装开发软件包。在 Windows 平台上,将需要安装 Cygwin 工具箱。Cygwin 是用于 Windows 的类 UNIX 环境,它包括 GCC 移植以及所有必需的开发工具,包括 automake 和 GNU 调试器(GNU Debugger,GDB)。Cygwin 是在 cygwin1.dll 库基础上构建的。Cygwin 的备用解决方案是 Minimalist GNU for Windows(MinGW)。该工具是一组可免费获取、自由分发的特定于 Windows 的头文件和导入库,这些头文件和导入库与 GNU 工具集(它们允许您生成不依赖于任何第三方 DLL 的本机 Windows 程序)结合在一起。如果您想要创建与 POSIX 兼容的 Windows 应用程序,那么 MinGW 是最佳选择。MinGW 甚至可以在 Cygwin 安装之上工作。Solaris 和 QNX 要求您从因特网下载并安装其特定的 GCC、GNU Make binutils 和 GDB 移植。 假设您安装了适当的 Java SDK/JRE 和 Eclipse 平台 SDK,并且它们都正常运行。CDT 以两种“方式”可用:稳定的发行版和试运行版(nightly build)。试运行版未经完全测试,但它们提供了更多的功能并改正了当前错误。安装之前,请检查磁盘上是否存在先前版本的 CDT,如果存在,请确保完全除去它。因为 CDT 没有可用的卸载程序,所以需要手工除去它。为了检查先前版本是否存在,转至 CDT 插件所驻留的目录:eclipse/plugins。接着,除去所有以 org.eclipse.cdt 名称开头的目录。需要做的最后一件事情是从 workspace/.metadata/.plugins 和 features 除去 CDT 元数据目录 or.eclipse.cdt.*。 下一步是下载 CDT 二进制文件。注意:请下载适合于您操作系统的正确的 CDT。遗憾的是,即使 CDT 是用 Java 编写的,它也不是与平台无关的。接着,将归档文件解压到临时目录中,从临时目录将所有插件目录内容都移到 Eclipse plugins 子目录。还需要将 features 目录内容移到 Eclipse features 子目录中。现在,重新启动 Eclipse。Eclipse 再次启动之后,更新管理器将告诉您它发现了更改并询问您是否确认这些更改。现在您将能够看到两个可用的新项目:C 和 C++。 创建新项目 在 Eclipse 中安装 CDT 之后,浏览至 File => New => Project,在那里,您将发现三个新的可用项目类型:C(“Standard C Make Project”)、C++(“Standard C++ Make Project”)和“Convert to C or C++ Projects”。从“Standard Make C++ Project”开始,为您的项目创建源代码文件。在 C/C++ Projects 视图中,单击鼠标右键,然后选择 New => Simple => File。命名您的文件并保存它。您可能会用这种方法创建许多头文件以及 C/C++ 实现代码文件。最后当然是 Makefile,GNU Make 将使用它来构建二进制文件。对该 Makefile 使用常见的 GNU make 语法(请参阅参考资料)。请记住:Makefile 要求您使用 Tab 字符而不是空格来产生缩进行。 您通常会将现有的源代码导入 Eclipse(请参阅图 2)。CDT 为执行这一操作提供了一种便捷的方法:即使用 Import 向导,将文件从文件系统目录复制到工作台。转至主菜单栏,选择 File => Import => File System。单击 Next,打开源目录,选择您想要添加文件的目录。单击 Select All 以选择目录中的所有资源,然后从头到尾检查,取消选择您不打算添加的那些资源。指定将作为导入目标的工作台项目或文件夹。还可以通过从文件系统拖动文件夹和文件并将它们放入 Navigator 视图中,或者通过复制和粘贴来导入文件夹和文件。 图 2. 将现有的源代码导入 CDT 项目 关键的 CDT IDE 功能 CDT IDE 是在 CDT UI 插件所提供的通用可扩展编辑器基础上构建的。然而,该模块仍处于开发阶段,所以它仍缺少一些重要的实用程序,如类浏览器或语言文档浏览器。CDT IDE 的主要功能是: 图 3. 不成功的编译之后突出显示的语法错误标记 图 4. 有助于使用正确的语言语法的代码辅助功能 图 5. 预定义的 C/C++ 代码模板 图 6. 用 Local History 功能检查源代码中的更改 构建并运行项目 CDT 提供了一种设置项目构建选项的简单方法。CDT 依赖于三个 GNU 工具:GCC、GDB 和 Make。因此,对用于调试的 GDB 或用于编译的 GCC 和 Make 的依赖要求这些应用程序可用于用户想要使用的平台。大多数 Linux(通常和类 POSIX)源代码软件包使用 autoconf 脚本来检查构建环境,所以您必需运行 configure 命令,该命令在编译之前创建“Makefile”。CDT 没有提供编辑 autoconf 脚本的方法,所以必需手工编写它们;然而,您可以配置构建选项以在编译之前调用 configure 命令。 如果通过调用 make 命令来构建项目,那么缺省设置没问题,但是,如果使用一种更复杂的方法进行构建,则必需在 Build Command 文本框中输入适当的命令(例如,make -f make_it_all)。接下来,在 C/C++ Projects 视图中,选择 C/C++ project,然后单击鼠标右键并选择 Rebuild Project。所有来自 make、编译器和链接程序的编译消息都被重定向到控制台窗口: 图 7. 带编译器输出的控制台窗口 编译成功之后,您或许想要运行您的应用程序。所有用于运行和调试的选项都位于主 Eclipse 菜单的 Run 菜单下。然而,必须在早期定义用于运行项目的选项。可以通过转至主菜单(在那里,有用于运行应用程序的不同概要文件)中的 Run… 选项来完成这一步;例如,可以将一个概要文件用于测试目的,而将另一个概要文件用于运行最终版本。另外,可以定义希望要传递给应用程序的参数,或者可以设置环境变量。其它选项用于设置调试选项,例如使用哪个调试器(GNU GDB 或 Cygwin GDB)。图 8 显示了正在为项目创建运行概要文件(run profile)。 图 8. 为项目创建运行概要文件 当进入 C/C++ Projects 视图,选择您的项目,单击鼠标右键并在 Build Settings 选项卡上选择 Properties 之后,就可以使用更多的用于构建项目的常用选项。这些选项主要影响因遇到编译错误而使构建停止时所发生的情况。 调试 C/C++ 项目 CDT 扩展了标准的 Eclipse Debug 视图,使之具备了调试 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 输出的程序。 结束语 C/C++ 开发工具箱(CDT)提供了一组功能强大的插件,这些插件可以帮助您用 Eclipse 开发 C/C++ 应用程序。虽然 CDT 仍处于开发阶段,但您可以利用其现有的诸多功能。 |
>> 本文固定链接: http://www.vcgood.com/archives/566