我们将概述如何在 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 插件/组件的完整列表:

  主 CDT 插件(Primary CDT plug-in)是“框架”CDT 插件。

  CDT 功能 Eclipse(CDT Feature Eclipse)是 CDT 功能组件(Feature Component)。

  CDT 核心(CDT Core)提供了核心模型(Core Model)、CDOM 和核心组件(Core Component)。

  CDT UI 是核心 UI、视图、编辑器和向导。

  CDT 启动(CDT Launch)为诸如编译器和调试器之类的外部工具提供了启动机制。

  CDT 调试核心(CDT Debug Core)提供了调试功能。

  CDT 调试 UI(CDT Debug UI)为 CDT 调试编辑器、视图和向导提供了用户界面。

  CDT 调试 MI(CDT Debug MI)是用于与 MI 兼容的调试器的应用程序连接器。

  现在,让我们研究一下如何在实际应用程序中使用这些组件。图 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 名称开头的目录。需要做的最后一件事情是从
tadata/.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 的主要功能是:

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

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

  提纲:Outline 窗口模块提供了有关出现在源代码中的过程、变量、声明以及函数的快速视图。利用 outline,您可以方便地找到源代码中的适当引用,或者甚至搜索所有项目源代码。

  代码辅助:这个代码完成功能类似于可在 Borland C++ Builder 或 MS Visual Studio 中找到的功能。它使用了代码模板,并且只有助于避免愚蠢的语法错误:

  

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

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

  

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

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

  

  图 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 仍处于开发阶段,但您可以利用其现有的诸多功能。

用Eclipse平台进行C/C++开发的更多相关文章

  1. 关于Eclipse平台的使用和开发第一个SWT程序

    IBM把投入巨资开发的Eclipse作为一个开源项目捐献给了开源组织Eclipse.org Eclipse出色而有独创的平台特性,现在仍由IBM子公司OTI(主要从事Eclipse开发的人)继续领导着 ...

  2. 转: 用 Eclipse 平台进行 C/C++ 开发

    http://www.ibm.com/developerworks/cn/linux/opensource/os-ecc/index.html

  3. Eclipse平台下配置Go语言开发环境(Win7)

    <Go语言编程>中写到:“从功能和易用性等方面考虑, Eclipse+GoEclipse.LiteIDE这两个环境在所有IDE里面是表现最好的”,所以笔者打算采用Eclipse+GoEcl ...

  4. [_CN] Eclipse精要与高级开发技术 note

    一 eclipse是基于java的 ide ,但根据其体系结构,开发插件,也可拓展到其他语言———————— 尽管如此,但还是很少听说用eclipse来写php或者c的 跨os 三个项目:eclips ...

  5. 基于Eclipse的Go语言可视化开发环境

    http://jingyan.baidu.com/article/d7130635032e2f13fdf475b8.html 基于Eclipse的Go语言可视化开发环境 | 浏览:2924 | 更新: ...

  6. (转) 在Eclipse中进行C/C++开发的配置方法(20140721最新版)

    本文转载自:http://blog.csdn.net/baimafujinji/article/details/38026421 Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其 ...

  7. (转)Eclipse平台技术概述

    转载:周金根 http://zhoujg.blog.51cto.com/1281471/516833    Eclipse:Eclipse平台技术概述 2010-10-19 13:35:00 标签:E ...

  8. 基于 Eclipse 平台的代码生成技术

    ------------------------------------------------------------------ 转自http://www.ibm.com/developerwor ...

  9. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

随机推荐

  1. thinkphp中memcache的用法实例

    本文实例讲述了thinkphp中memcache的用法.分享给大家供大家参考.具体分析如下: 1.下载并安装memcache ① window下安装memcache. 下载memcached.exe ...

  2. List<Map<String, Object>>是什么意思

    List集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型 List以Map接口对象为列表对象. Map以String为键,以Object为值. List里只能 ...

  3. 关于Unity中的刚体和碰撞器的相关用法(二)

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

  4. reduce内置高阶函数求和

    >>> def f(x, y): ... return x+y ... >>> reduce(f, a, ) >>> reduce(lambda ...

  5. linux 日志查询

    tail -n 400 logname | grep "AAA" grep 简单使用 1.把要查询的行写到文本里面去: grep WXCP IC.NotifyIndexServer ...

  6. C# 在托盘显示图标

    //上面一行是主窗体InitializeComponent()方法中需要添加的引用 this.SizeChanged += new System.EventHandler(this.Form1_Siz ...

  7. Linq to Entity 动态拼接查询条件(重点是OR)

    public static class PredicateExtensions { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效 ...

  8. repo sync出现“fatal: '../platform/abi/cpp.git' does not appear to be a git repository”的解决方案

    在我下载Android源代码时,在最后一步调用repo sync,出现“fatal: '../platform/abi/cpp.git' does not appear to be a git rep ...

  9. QTreeView

    隐藏左侧的小箭头

  10. CSS3和jQuery实现的自定义美化Checkbox和Radiobox

    现在经常可以在网络上看到一些非常奇特的表单元素,例如Checkbox复选框和Radiobox单选框,浏览器默认的样式确实是太丑了,而且更让人蛋疼的是各个浏览器的样式还不统一,考虑到现在越来越多的用户使 ...