将 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 的优点。

Priyadarshini Sampath (priyadarshini@in.ibm.com), 高级软件工程师, IBM India

Priyadarshini SampathPriyadarshini Sampath 目前在 IBM India 的 India Systems and Technology Lab 从事 Universal Systems Management 项目方面的工作。在此之前,她曾在 IBM India Software Labs 的 Host Integration 领域(HACP)工作了六年多。她的工作经验包括管理主机访问的客户机产品,如 PCOMM。她是 IBM 认证的 XML 解决方案开发人员,持有印度 Bharadhidasan 大学的计算机科学与工程学学士学位。



Ramakrishnan Kannan (rkrishnan@in.ibm.com), 高级软件工程师, IBM India

Ramakrishnan KannanRamakrishnan Kannan 在班加罗尔的 IBM India Software Laboratory 从事主机集成方面的工作。他曾担任过 IBM 个人通信和通信服务器产品方面的开发人员。除承担开发工作外,他还与 IBM 亚太区的客户合作开展为主机应用程序启用 Web 服务方面的工作。他曾为 Infosys 等 developerWorks 的业务合作伙伴举办过旨在提高 Web 服务意识的培训。他是 IBM 认证的 XML 解决方案开发人员及 Sun 认证的 Java 程序员。他感兴趣的领域包括主机集成、分布式机算、SOA 和网络。



Karthik Subbian (ksubbian@in.ibm.com), 高级软件工程师, IBM India

Karthik SubbianKarthik Subbian 目前在班加罗尔的 IBM India Software Laboratory 从事为制造企业构建优化产品方面的工作。他还具有帮助客户管理应用程序并将其迁移到 IBM 平台方面的经验。他感兴趣的软件领域包括网格计算、XML、Web 服务和 SOA。他曾与他人合著了多本有关网格计算技术的 IBM 红皮书。他是 IBM 认证的 XML 解决方案开发人员及 Sun 认证的 Java 程序员。



2007 年 1 月 29 日

获得更多 Eclipse 资源 —— Eclipse 项目资源中心

想获得更多 Eclipse 相关资源吗?developerWorks 中国网站上有非常多的关于 Eclipse 项目的文章、教程和技巧,通过“Eclipse 项目资源中心”,您可以非常快捷地找到所有关于 Eclipse 项目的技术参考资源。

如果您刚刚接触 Eclipse 项目,您可以从项目资源中心的 “现在开始学习 Eclipse”栏目 了解最新版本 Eclipse 的链接、有关 IBM 参与 Eclipse 的信息以及一些最有趣的 Eclipse 项目的指南。如果您已经有一定 Eclipse 基础,您也可以从 “推荐 Eclipse 阅读清单”栏目 找到让您技艺更进一步的参考资源。

Eclipse Platform 是一种开放源码工具,协助您在单独一个开发环境内将项目从设计阶段转到测试阶段,而无需为各阶段使用不同的工具。开发 Eclipse 的目的在于为工具开发社区提供帮助,使人们能集中精力处理工具的核心功能性,而不是 IDE 自身。这是可行的,因为 Eclipse 程序模型支持被称作插件的软件构建块。

最初,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 创建一个 HelloWorld Win32 应用程序
  1. 启动 Eclipse,打开 C/C++ 视图。
    1. 选择 Window > Open Perspective > Other
      图 2a. 打开 C/C++ 视图
      打开 C/C++ 视图
    1. 选择 C/C++ 视图
    图 2b. 选择 C/C++ 视图
    选择 C/C++ 视图
    注意:只有在安装 CDT 插件后,C/C++ 视图才会在 Select Perspective 对话框中列出。
  1. 通过 File > New > Standard Make C++ Project 创建一个标准的 C/C++ Make 项目。在出现的 New Project 对话框中的 Project Name 编辑框中将此项目命名为 HelloEclipse,单击 Finish
    图 3a. 创建 HelloWorld
    创建 HelloWorld
    图 3b. 将项目命名为 HelloEclipse
    将项目命名为 HelloEclipse
  1. 现在我们要把用 Visual Studio 创建的文件导入 Eclipse 中。选择 File > Import。在 Import 对话框中选择 Filesystem 后单击 Next。如果新创建的项目不可见,选择 Window > ShowView > C/C++ project
    图 4. 导入 HelloWorld Visual Studio 项目文件
    导入 Visual Studio 文件
  1. 浏览到新创建的 Visual Studio 项目所在的目录,选择要导入的 *.c*、*.h*、*.rc、*.ico.mak 文件后单击 Finish
    图 5. 导入 *.c*、*.h*、*.rc、*.ico 和 .mak 文件
    导入 *.c*、*.h*、*.rc、*.ico 和 .mak 文件
  1. 环境变量的添加
    图 6. 添加环境变量
    添加环境变量
  1. 右键单击此项目,选择 Properties。在 Properties for HelloEclipse 对话框中,选择左侧的 C/C++ Make Project,添加 INCLUDELIB 环境变量,使其指向 Visual Studio 的 include 和 lib 路径。如果您使用的是 SDK 平台,则指向 SDK 的 include 和 lib 目录。
    图 7. 使 Visual Studio include 和 lib 路径指向正确的方向
    使 Visual Studio include 和 lib 路径指向正确的方向
  1. 打开从 Visual Studio 项目中导入的 .mak 文件,做出以下更改:
    1. 将配置(CFG)由 Debug 更改为 Release,以便得到一个应用程序的发布版本。它与 CFG=HelloWin - Win32 Release 相似。
      图 8a. 将配置从 Debug 更改为 Release
      将配置从 Debug 更改为 Release
    1. 在 ALL: tag: @cmd /c $(OUTDIR)\$(EXENAME).exe 中添加执行应用程序的命令。
    2. 定义 EXENAME=HelloWin
    图 8b. 定义 EXENAME
    定义 EXENAME
  1. 下一步是新建一个 make target。
    1. 右键单击我们的当前项目,单击 Create Make Target
      图 9a. 新建一个 make target
      新建一个 make target
    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
    make target 应为 HelloWin.mak
  1. 双击我们创建的 HelloEclipse,构建并运行 Win32 应用程序。
    图 10. 运行应用程序
    运行应用程序

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 ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Open source
ArticleID=192436
ArticleTitle=将 Visual Studio C 和 C++ 项目迁移到 Eclipse CDT
publish-date=01292007