将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT

将 Microsoft VS 项目迁移到 Eclipse C/C++ Development Toolkit 的详尽指南

Windows® 上的大多数 C/C++ 项目都是使用 Microsoft® Visual Studio® 开发的,因此研究这些项目到 Eclipse 这种开放源码 IDE 的迁移是很有必要的。本文简明扼要地介绍了将 Microsoft Visual Studio C/C++(MSVC)项目迁移到 Eclipse 的步骤,比较和对照了 MSVC 和 Eclipse CDT 的优点。

最初,Eclipse 是作为 Java 编程 IDE 起步的,而发展只是时间问题。由于其可扩展性,它被推崇用来为其他编程语言开发应用程序,比如 COBOL 和 C/C++。
本文主要关注 C 和 C++ 应用程序。以在 Windows 上部署为目的的大多数 C 和 C++ 项目都是使用 Microsoft Visual Studio 开发的。本文介绍了将 Microsoft Visual Studio C/C++(MSVC)项目迁移到 Eclipse 的详尽流程。在此过程中,我们将比较和对照使用 MSVC 和 Eclipse CDT 的优点。

先决条件

Eclipse Platform
从 Eclipse Foundation 下载 Eclipse。
Eclipse C++ Development Toolkit(CDT)
获取用于 C 和 C++ 开发的 Eclipse 插件(请参阅  关于 CDT)。
Visual Studio/Platform SDK
这应当是您当前在 Windows 中为 C/C++ 应用程序使用的开发 IDE。最新的 Platform SDK(MSVC Express)版本中出现了一些变化,限制您仅可采用通过 nmake makefile 构建可执行程序的传统方法。本文假定您通过 makefile 构建可执行程序。务必确定您使用的版本。

比较 Visual Studio 和 Eclipse

Microsoft Visual Studio 具有悠久的历史,并广泛被 Windows 应用程序开发人员所采用。另外,它在 C 和 C++ Microsoft Windows 应用程序开发领域也处于领先地位。对比起来,Eclipse 相对较新,目前在开发人员社区中十分盛行。Eclipse CDT 被设计用来满足大多数 OS 平台(比如 Linux®)开发商的要求,并十分依赖于 gcc 编译器和其他开放源码工具。

比较 Eclipse 和 Visual Studio 有很多途径,可以比较用户界面(UI)、体系结构、成本、可管理性和其他诸多标准。由于本文着眼于 C 和 C++ 开发,所以我们将针对 Windows 中的 C 和 C++ 应用程序开发,来比较和对照这两种工具的实力。

Windows 上的 C/C++ 开发对比
  Microsoft Visual Studio C/C++ Eclipse CDT
许可 专有 开放源码
支持的编程语言 限于 C/C++ 和 Microsoft 支持的编程语言 同类的不同编程语言(COBOL、Java 编程语言和其他),以及 C/C++
支持的 SDLC 阶段 只有编码 设计、编码、配置管理、测试等
调试 完全调试支持 无调试支持;调试支持仅对除 Windows 以外平台上的经 gcc 编译的 C 代码可用。必须具备 Microsoft Debugging Tools for Windows
资源编辑器 通用资源编辑器 无资源编辑器
测试 Visual Studio 无测试工具; 需用第三方工具 可用 CppUnit(更多信息请参阅 参考资料)
MFC 编程 针对 MFC 应用程序(向导、代码模板等)的开发支持 不支持
插件工具开发 Visual Studio 6 不支持任何插入式软件组件 基于插件的体系结构
特定于 Microsoft Windows 的工具 Spy++、错误查找、ActiveX Container 及其他 没有特定于 Windows 平台的工具

关于 CDT

Eclipse C++ Development Toolkit(CDT)是 Eclipse 平台的一种插件形式的扩展。所有平台均可下载此插件。此插件的开源特性及友好的用户界面使其不仅在 Linux 开发人员中,而且在其他平台上的 C++ 开发人员中都甚为流行。CDT 和 Web Tools 插件是两个最流行的 Eclipse 插件。在使用 CDT 的开发人员中,大约有三分之二都是 Windows 用户。

CDT 具有子组件或插件,它们是 CDT 社区中的独立项目。其中最重要的是 CDT 主插件,它提供核心 CDT 功能。CDT Debug UI 为调试工具编辑器和视图提供 UI 功能。CDT UI 插件提供与 UI 有关的特性、视图、编辑器、向导等。CDT Debug 提供核心调试功能。CDT Feature 提供 CDT Feature 组件。CDT 核心包括 Core Model、CDOM 和其他核心组件。CDT Launch 为启动外部可执行文件和工具提供启动机制。CDT Debug MI 是针对兼容 MI 的调试器的应用程序连接器。

CDT 编辑器具有多种特性,这些特性使其很受欢迎。比如, 语法高亮和代码协助使软件开发既快捷又容易。语法高亮是可配置的,还可根据您的个人喜好使之个性化。代码协助是代码完成功能,它与 Visual Studio 里的此项功能相似。自定义的代码模板可添加到代码协助所使用的插件中。

我们将在以下部分中学习如何有效使用 CDT 把 Visual Studio 项目迁移到 Eclipse CDT Workbench。

从 VS 到 Eclipse

在这个部分,我们将迁移一个用 Microsoft Visual C++ 6 开发的简易 HelloWorld Win32 应用程序。

  1. 如果您没有现成的 Win32 应用程序,就用 Visual Studio 创建一个 HelloWorld Win32 应用程序。从 Visual Studio 的 Projects > Export Makefile 菜单中创建一个 makefile。
    图 1. 用 Visual Studio 创建一个 HelloWorld Win32 应用程序
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第1张图片
  1. 启动 Eclipse,打开 C/C++ 视图。
    1. 选择 Window > Open Perspective > Other
      图 2a. 打开 C/C++ 视图
      将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第2张图片
    1. 选择 C/C++ 视图
    图 2b. 选择 C/C++ 视图
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第3张图片
    注意:只有在安装 CDT 插件后,C/C++ 视图才会在 Select Perspective 对话框中列出。
  1. 通过 File > New > Standard Make C++ Project 创建一个标准的 C/C++ Make 项目。在出现的 New Project 对话框中的 Project Name 编辑框中将此项目命名为 HelloEclipse,单击 Finish
    图 3a. 创建 HelloWorld
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第4张图片
    图 3b. 将项目命名为 HelloEclipse
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第5张图片
  1. 现在我们要把用 Visual Studio 创建的文件导入 Eclipse 中。选择 File > Import。在 Import 对话框中选择 Filesystem 后单击 Next。如果新创建的项目不可见,选择 Window > ShowView > C/C++ project
    图 4. 导入 HelloWorld Visual Studio 项目文件
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第6张图片
  1. 浏览到新创建的 Visual Studio 项目所在的目录,选择要导入的 *.c*、*.h*、*.rc、*.ico 和 .mak 文件后单击 Finish
    图 5. 导入 *.c*、*.h*、*.rc、*.ico 和 .mak 文件
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第7张图片
  1. 环境变量的添加
    图 6. 添加环境变量
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第8张图片
  1. 右键单击此项目,选择 Properties。在 Properties for HelloEclipse 对话框中,选择左侧的 C/C++ Make Project,添加 INCLUDE 和 LIB环境变量,使其指向 Visual Studio 的 include 和 lib 路径。如果您使用的是 SDK 平台,则指向 SDK 的 include 和 lib 目录。
    图 7. 使 Visual Studio include 和 lib 路径指向正确的方向
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第9张图片
  1. 打开从 Visual Studio 项目中导入的 .mak 文件,做出以下更改:
    1. 将配置(CFG)由 Debug 更改为 Release,以便得到一个应用程序的发布版本。它与 CFG=HelloWin - Win32 Release 相似。
      图 8a. 将配置从 Debug 更改为 Release
      将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第10张图片
    1. 在 ALL: tag: @cmd /c $(OUTDIR)\$(EXENAME).exe 中添加执行应用程序的命令。
    2. 定义 EXENAME=HelloWin
    图 8b. 定义 EXENAME
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第11张图片
  1. 下一步是新建一个 make target。
    1. 右键单击我们的当前项目,单击 Create Make Target
      图 9a. 新建一个 make target
      将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第12张图片
    1. 为我们的项目新建一个 make target。“Target name” 用来指定您想要的任何名称。“Make target” 用来指定我们刚刚在前一步中修改的 .mak 文件名。清除 Use default 复选框,指定 “Build command”,此处的 build command 就是 nmake。要使 Make targets 视图可见,选择 Window > Show View > Make Targets
    图 9b. make target 应为 HelloWin.mak
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第13张图片
  1. 双击我们创建的 HelloEclipse,构建并运行 Win32 应用程序。
    图 10. 运行应用程序
    将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT_第14张图片

VC++ 2005 Express 在传统的 Visual Studio C/C++ 中做了大量更改,可用一个在 Eclipse 上启动的项目来解决此项问题。要获得详细资料,可以访问 Eclipse MSVC(请参阅 参考资料)。

Eclipse CDT 要成为可用于 Windows 开发的 IDE 所面临的挑战

让我们看看 Eclipse CDT 在软件开发周期的不同阶段所面临的诸多挑战。

设计

UML 已经成为用面向对象语言设计软件应用程序的实际标准。IBM 为 Java 技术提供两种基于 Eclipse 的 Java 开发工具:Rational® Application Developer 和 Rational Rose® XDE Developer。这两种工具都提供具有 UML 支持的模型驱动开发、Java 代码双向工程、自动或随需应变的模型代码同步以及其他有用的特性。尽管已经有可用于 Eclipse 的 UML 插件,但目前在 Eclipse 平台中 UML 和 C/C++ 还没有紧密地集成起来。

开发

Visual Studio 最有趣的特性是它的资源编辑器。不论是 SDK 还是 MFC 资源编辑器,它们都被广泛用于为应用程序开发静态的 UI 控件。目前 Eclipse CDT 没有为开发 UI 提供支持。当生成用于 Windows 开发的 .rc 文件时可以考虑使用 Eclipse 可视化编辑器项目。

Microsoft 不同的发布版本的编译器也有所改变,因此 Eclipse CDT 要想支持 Microsoft 发布的 SDK 工具的不同版本就会极具挑战。

目前要将 MSVC 代码完全迁移到开放源码平台是不可行的。在 Linux 中,这是一项复杂的任务。Microsoft 的 SDK 工具不能在诸如 Linux 这样的开放源码平台上运行。要让 SDK 工具在 Linux 上运行,就必须使其运行于 Windows 仿真程序中。

然而目前在 Windows 平台中,有了 SDK 平台、Eclipse CDT 和 Debugging Tools for Windows 的帮助,开发人员可以把 Eclipse 平台看作 MS Visual Studio 的替代方案。

调试

Eclipse CDT 依赖于 GNU Debugger,即 GDB。GDB 是用于 C、C++、Ada 和其他语言的资源级调试器。Eclipse 或 GDB 都不能理解由 Microsoft 编译器生成的调试信息。这样一来,选择 CDT 作为 Windows 开发的专用开发环境成了一种挑战。然而,您可以把 Debugging Tools for Windows 同时用于作为一种开发环境的 Eclipse 的调试。

测试

如同 Java 的 JUnit 一样,CppUnit 是 C/C++ 的测试框架。Eclipse 的 CppUnit 插件也是可用的,而且可以和 CDT 同时使用来测试 CPP 代码。关于 CppUnit 教程,请参阅 参考资料。

工具和其他标准

除了在 Windows 上常规的 SDK 开发之外,Visual Studio 还支持包括 DDK、.NET、WMI、Web 开发、IE 组件开发、MDAC 等许多其他开发。Eclipse 插件开发社区在此领域还会做出更多贡献。

所有的开放源码工具,例如 listdlls、进程管理器和任务处理器,都可用来在 Eclipse CDT 内部提供支持,这就能在一定程度上缩短这种距离。

结束语

Eclipse 不断升温的流行程度、其多功能性和开放源码特性促使很多人都把 Eclipse 看作未来的开发平台。像 GCC、GDB 或 GCC/GDB for Windows 这样的开放源码开发工具能提供与 Windows SDK 相似的功能性,不过,在当前,要移植 Windows 应用程序以使用这些工具还是一项非凡的任务。

然而,当我们考虑整个 SDLC 阶段时,就可以将 Eclipse 看作一种可以替代 visual studio 的有效的开放源码方案。Eclipse 所支持的可用于 Windows 中的 C/C++ 应用程序开发的插件越来越多,Eclipse CDT 很可能会变成 Windows 中的 C/C++ 开发的默认 IDE。

参考资料

学习

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
  • 访问 IBM developerWorks 的 Eclipse 项目资源中心,更多地了解 Eclipse。
  • 如果您在 CDT 方面还是个新手,请阅读 Brian Lee 的文章 Eclipse Project CDT (C/C++) Plugin Tutorial。
  • 参阅 CppUnit wiki 来了解用于 Eclipse 的 C++ 单元测试框架。
  • 参阅 Eclipse.org 上涵盖 CDT 所有内容的 CDT wiki 页面,更好地了解 CDT。
  • Eclipse C/C++ Development Tooling 包含 CDT 文档和下载的链接。
  • 参阅 Eclipse.org 上的 CDT/designs/msvc 来了解有关 CDT 和 Microsoft Visual Studio 的更多内容。
  • 查看 “Eclipse 平台入门”,获得有关 Eclipse 平台的出色简介。
  • 随时关注 developerWorks 技术事件和网络广播。
  • 查看全球范围内 IBM 开放源码开发人员感兴趣的最新会议、展览、webcast 和其他 事件。
  • 访问 developerWorks 上的 Open source 专区,获得广泛的how-to 信息、工具和项目更新,以帮助您使用开放源码技术进行开发,并将其与 IBM 的产品结合使用。
  • 要收听面向软件开发人员的有趣访谈和辩论,请务必关注 developerWorks podcast。

获得产品和技术

  • 下载 Eclipse Platform,现在就开始使用 Eclipse。
  • 在 IBM alphaWorks 上查看最新的 Eclipse 技术下载。
  • 使用 IBM 试用软件 革新您的下一个开放源码开发项目,这些软件可通过下载或 DVD 获得。

你可能感兴趣的:(工具)