天天看點

将 Visual Studio C 和 C++ 項目遷移到 Eclipse CDT_C/C++

  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 插件。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 應用程式。

  如果您沒有現成的 Win32 應用程式,就用 Visual Studio 建立一個 HelloWorld Win32 應用程式。從 Visual Studio 的 Projects > Export Makefile 菜單中建立一個 makefile。 

圖 1. 用 Visual Studio 建立一個 HelloWorld Win32 應用程式

  啟動 Eclipse,打開 C/C++ 視圖。

  選擇 Window > Open Perspective > Other 

圖 2a. 打開 C/C++ 視圖

  選擇 C/C++ 視圖

圖 2b. 選擇 C/C++ 視圖

注意:隻有在安裝 CDT 插件後,C/C++ 視圖才會在 Select Perspective 對話框中列出。

  通過 File > New > Standard Make C++ Project 建立一個标準的 C/C++ Make 項目。在出現的 New Project 對話框中的 Project Name 編輯框中将此項目命名為 HelloEclipse,單擊 Finish。 

圖 3a. 建立 HelloWorld

圖 3b. 将項目命名為 HelloEclipse

  現在我們要把用 Visual Studio 建立的檔案導入 Eclipse 中。選擇 File > Import。在 Import 對話框中選擇 Filesystem 後單擊 Next。如果新建立的項目不可見,選擇 Window > ShowView > C/C++ project。 

圖 4. 導入 HelloWorld Visual Studio 項目檔案

  浏覽到新建立的 Visual Studio 項目所在的目錄,選擇要導入的 *.c*、*.h*、*.rc、*.ico 和 .mak 檔案後單擊 Finish。 

圖 5. 導入 *.c*、*.h*、*.rc、*.ico 和 .mak 檔案

  環境變量的添加 

圖 6. 添加環境變量

  右鍵單擊此項目,選擇 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 項目中導入的 .mak 檔案,做出以下更改:

  将配置(CFG)由 Debug 更改為 Release,以便得到一個應用程式的釋出版本。它與 CFG=HelloWin - Win32 Release 相似。 

圖 8a. 将配置從 Debug 更改為 Release

  在 ALL: tag: @cmd /c $(OUTDIR)\$(EXENAME).exe 中添加執行應用程式的指令。

  定義 EXENAME=HelloWin。

圖 8b. 定義 EXENAME

  下一步是建立一個 make target。

  右鍵單擊我們的目前項目,單擊 Create Make Target。 

圖 9a. 建立一個 make target

  為我們的項目建立一個 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

  輕按兩下我們建立的 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 代碼。

  工具和其他标準

  除了在 Windows 上正常的 SDK 開發之外,Visual Studio 還支援包括 DDK、.net、WMI、Web 開發、IE 元件開發、MDAC 等許多其他開發。Eclipse 插件開發社群在此領域還會做出更多貢獻。

  所有的開放源碼工具,例如 listdlls、程序管理器和任務處理器,都可用來在 Eclipse CDT 内部提供支援,這就能在一定程度上縮短這種距離。

  結束語