在Eclipse中開發C/C++項目


摘要 : 通過本文你將獲得如何在 Eclipse 平台上開發 C/C++ 項目的總體認識。雖然 Eclipse 主要被用來開發 Java 項目,但它的框架使得它很容易實現對其他開發語言的支持。在這篇文章里,你將學會如何使用 CDT(C/C++ Development Toolkit) ,一個在 Eclipse 平台上最適用的 C/C++ 工具包。
 
C/C++ 語言是世界上最流行的程序開發語言,所以 Eclipse 提供對 C/C++ 語言的支持也就不足為奇了。由於 Eclipse 只是為開發工具提供一個框架,所以它必須借助外部插件的形式實現對 C/C++ 語言的間接支持。這篇文章告訴你如何使用 CDT ,一個用於 Eclipse 平台的 C/C++ 開發的插件組。 CDT 項目 ( 見本文后面的 Resource 部分 ) 的目標是為 Eclipse 平台提供一個完全意義上的 C/C++ 集成開發環境。雖然整個項目專注於 Linux 平台,但實際上,在那些提供了 GNU 開發工具的平台上, CDT 都可以運行得很好,包括 Win32(Win 95/98/Me/NT/2000/XP) QNX Neutrino Solaris 平台等。
CDT 是一個開源項目 ( 基於 CPL) ,純粹由 Java 語言實現。這些插件在 Eclipse 工作區中添加了一個 C/C++ 開發視角,包括一系列的視圖 (Views) 和向導 (Wizards) ,以及一些高級的編輯和調試支持等,以實現對 C/C++ 開發的全面支持。
由於其復雜性, CDT 被分割為若干個組件,每一個組件都以一個獨立插件的形式存在。每個組件都是一個獨立的項目,有自己的提交者、臭蟲分類和郵件列表等。但是,每個組件都是 CDT 正常運行不可或缺的。下面是一個完整的 CDT 插件列表 :
 
l         Primary CDT plug-in: CDT 插件提供一個框架;
l         CDT Feature Eclipse: CDT 的特性組件;
l         CDT Core: 提供核心模型、 CDOM 和核心組件;
l         CDT UI: CDT 的核心 UI 、視圖、編輯器、向導;
l         CDT Launch: 為外部工具諸如編譯器和調試器提供 Launch 機制;
l         CDT Debug Core: 提供調試功能;
l         CDT Debug UI: CDT 調試編輯器、視圖和向導提供用戶界面;
l         CDT Debug MI: 用於與 MI 兼容的調試器的應用程序連接器 (Connector)
 
現在,讓我們看看在一個真正的應用程序中如何使用這些組件。圖 1 顯示了一個在 Eclipse 中的 C/C++ 項目 :

1 使用 CDT 插件在 Eclipse 中編輯 C/C++ 項目
安裝和運行CDT
在你安裝和運行 CDT 之前,請確保你有可用的 GNU C 編譯器 (GCC) 以及配套工具 (make, binutils GDB) 。如果你運行在 Linux 平台,則只需使用適合於你的 Linux 發布版的 PM(Package Manager, 如果是 RedHat Linux 則為 RPM) 安裝開發包即可。如果是 Windows ,則需安裝 Cygwin( 見本文后面的 Resource 部分 ) Cygwin Windows 操作系統上模擬了一個 Unix 開發環境,包括 GCC 以及一些必要的開發工具,以及 automake GDB 等。 Cygwin 是構建在 cygwin1.dll 的基礎之上的。 Cygwin 的一種替代品是 Minimalist GNU for Windows (MinGW ,見本文后面的 Resource 部分 ) 。它是一組可免費獲取的,自由分發的 Windows 標准的頭文件和導入庫,並與 GNU 工具集結合在一起,使得你可以不依賴第三方 DLL 開發本機 Windows 應用程序。如果你想開發符合 POSIX 標准的 Windows 應用程序, MinGW 是你最好的選擇。 MinGW 甚至可以在安裝了 Cygwin 的環境中工作。如果是 Solaris QNX 平台,則你需要在 Internet 上下載相應平台的 GCC GMake GDB 等開發工具 ( 見本文后面的 Resource 部分 )
在這里,我們假定你已經安裝了正確的 Java SDK/JRE Eclipse Platform SDK 並且它們可以正常工作。 CDT 有穩定的發布版 (Stable Release) 和每日構建版本 (Nightly Build) ,每日構建版本沒有經過全面的系統的測試,但是它包含更多的特性以及對既有 Bugs 的修正。在安裝前,首先檢查本地系統是否安裝了舊版本的 CDT ,如果有,則需要徹底刪除它。由於 CDT 沒有提供卸載程序 (Uninstaller) ,所以你需要手工完成這項工作。為了檢查 CDT 的舊版本是否存在,首先,到 CDT 插件在硬盤中的駐留位置 eclipse/plugins ,然后刪除所有以 org.eclipse.cdt 開頭的文件夾。你需要做的最后一件事情就是刪除 CDT 元數據目錄或者是從 workspace/.metadata/.plugins features 目錄下刪除 .eclipse.cdt.*
下一步就是下載運行 CDT 所必需的二進制文件。注意選擇適合你的操作系統的正確的 CDT 版本,不要弄錯了。不幸的是,雖然 CDT 是用 Java 語言實現的,但它並不是平台無關的。然后,我們把下載到的安裝包解壓到一個臨時目錄下,將里面所有的插件目錄拷貝到 Eclipse 的插件目錄中,另外,你還需要將 Features 目錄也拷貝到 Eclipse Features 目錄下,最后重啟 Eclipse 。在 Eclipse 重新啟動后,更新管理器 (Update Manager) 會告訴你它發現了更新並要求你確認。完成上述步驟后你會發現有兩個新的工程類型可用了 : C C++
創建一個新的項目
Eclipse 中安裝 CDT 之后,選擇 File | New | Project ,你會發現有三種新類型的 Project 可用 : C ("Standard C Make Project") C++ ("Standard C++ Make Project") "Convert to C or C++ Projects" 。讓我們從 "Standard C Make Project" 開始為你的工程創建源代碼文件。在 C/C++ Project 視圖中,右鍵彈出環境菜單並選擇 New | Simple | File ,鍵入文件名並保存。你可能需要重復這個步驟多次以建立多個頭文件和實現文件。當然,最后一個文件是必不可少的—— Makefile ,它被 GMake 用來產生二進制可執行文件。使用一般的 GMake 語法編輯 Makefile( 見本文后面的 Resource 部分 ) ,記住續行時使用 Tab 鍵而不是空格字符。
更多的時候,你會將一個已存在的源文件導入到 Eclipse ( 如圖 2 所示 ) CDT 提供了一種簡便的方法,使得你可以利用導入向導 (Import Wizard) 將一個文件系統目錄中的源文件添加到工作台中。選擇 File | Import | File System ,單擊 "Next" 按鈕,然后選中包含即將被導入的源文件的目錄,單擊 "Select All" 即可選中該目錄下的所有代碼文件,然后你可以遍歷文件列表,把你不希望添加到工程中的代碼文件去掉。最后,指定一個工作台項目或者目錄作為這些文件導入的目標位置。你可以通過將代碼文件從文件系統拖動到導航視圖 (Navigator View) 的方式完成同樣的動作,復制 / 粘貼亦可。

2 將已存在的代碼文件導入到 CDT 項目中
CDT集成開發環境的關鍵特性
CDT 集成開發環境是構建在 CDT UI 插件提供的一個通用的、可擴展的編輯器基礎之上的。這個模塊現在仍然在不斷開發中,但不管怎樣,有些重要特性缺失了,例如類瀏覽器 (Class Browser) 和語言文檔瀏覽器 (Language Documentation Browser) CDT 集成開發環境的主要特性如下 :
l         語法高亮
CDT 集成開發環境能識別 C/C++ 語法,提供語法高亮功能,並提供可配置的代碼着色和代碼格式化方案。

3 編譯失敗后的語法錯誤高亮顯示
l         Outline
Outline 窗口對出現在源代碼中的過程、變量、聲明和函數提供了一個快速視圖。利用 Outline 窗口你可以很輕松的跳轉到正確的引用點,甚至在整個項目的源代碼中搜索。
l         代碼助手
代碼自動補齊特性與我們在 Borland C++ Builder Microsoft Visual Studio 中見到的一樣。它還可以使用代碼模板,避免一些很低級的語法錯誤。

圖4 代碼助手有助於正確的語法使用

l         代碼模板
作為代碼助手特性之一的代碼模板,提供了一些預定義的 C/C++ 語法結構。你也可以定義你自己的語法結構,比如在代碼文件中加入 " 作者 " " 日期 " 等關鍵字。選擇 Window | Preferences | C/C++ | Code Templates ,你可以添加模板或瀏覽整個模板列表。代碼模板亦可通過 XML 文件的形式導入和導出。

圖5 預定義的C/C++代碼模板

l         代碼修改歷史
即使你沒有安裝諸如 CVS 等源代碼管理工具,你仍然可以跟蹤代碼的本地修改記錄。右鍵單擊選中的文件並在環境菜單中選擇 Compare with | Local History ...

圖6 通過"Local History"功能檢查本地修改記錄

編譯和運行
CDT 為設置編譯選項提供了一種便捷的方式。 CDT 依賴三個 GNU 工具 : GCC GDB GMake 。因此,鑒於 CDT 在編譯方面對 GCC GMake 的依賴性、以及在調試方面對 GDB 的依賴性,請確保在你的平台上這三個應用程序都是可用的。大多數 Linux( 更一般的說,類 POSIX) 源代碼包都使用 autoconf 腳本來檢查編譯環境,所以你必須運行 configure 命令,這個命令在你的項目得以編譯之前建立一個 "Makefile" 文件。 CDT 並沒有提供一種編輯 autoconf 腳本的方法,所以你必須手工創建;盡管如此,在編譯之前使用 configure 命令設置編譯選項仍然是必需的。
如果你通過 make 命令來編譯一個項目,那么默認設置已經足夠;但是如果你使用較為復雜的方法,你必須首先在編譯命令輸入框中輸入正確的命令 ( 比如 make -f make_it_all) ,然后,在 C/C++ project 視圖中,選擇 C/C++ Project ,右鍵彈出環境菜單並選擇 Rebuild Project 。所有的由 GMake 、編譯器和鏈接器產生的輸出信息都將被重定向到 Console 窗口中 :

圖7 編譯過程中的Console窗口

編譯成功后,你可能迫切的想運行你的程序。所有與運行和調試相關的選項都在 Run 主菜單中。不過,提供給 " 運行 " 的選項必須事先指定,你可以通過選擇 Run | Run… 做到這一點,該菜單項提供了程序在執行時的各種配置選項。例如,你可以為執行測試版本和最終版本提供不同的運行配置。另外,你可以設置傳遞給應用程序的參數,或者環境變量。選擇 Run | Debug… 可以配置調試選項,例如你希望使用的調試器 (GNU GDB 或者是 Cygwin GDB) 。圖 8 展示了一個項目的運行配置 :
 
 
 
8 為你的項目創建一個運行配置
C/C++ Project 視圖中,選中你的項目,右鍵彈出環境菜單並選擇 Properties ,在 Build Settings 選項卡中,你會發現更一般的用於生成應用程序的選項,這些選項定義了編譯器在遇到錯誤而停止時 Eclipse 的行為。
調試C/C++工程
CDT 擴展了 Eclipse 的調試功能,使 Eclipse 得以調試 C/C++ 程序。在調試視圖中,你可以對處於運行或者調試狀態的程序進行管理。為了調試一個程序,只需簡單的切換到調試視圖,然后你就可以在代碼中設置 ( 或者在程序執行的任何時候改變 ) 斷點 (Breakpoints)/ 觀察點 (Watchpoints) ,以及追蹤變量及寄存器的值等等。調試視圖顯示了當前被調試線程的棧結構,並將每個線程視為一個節點,從而將被調試進程以一個樹狀結構顯示出來。
Eclipse 通過 CDT Debug MI 插件實現對 MI(Machine Interface) 兼容的調試器的支持。但確切的說,什么是 MI 調試器?傳統觀點認為,第三方 GUI 調試器如 ddd xxgdb( 見本文后面的 Resource 部分 ) 在具體實現上都依賴於 GDB 的命令行輸出界面。不幸的是,這個界面被證明是很不穩定的。 GDB/MI 提供了一個新的面向機器 (Machine Oriented) 的界面,能夠更好的適應那些直接解析 GDB 輸出的程序。
結論
CDT 提供了一個強大的插件組合以幫助你在 Eclipse 中開發 C/C++ 程序。雖然 CDT 仍然在不斷開發中,但你已經可以從中獲得不少益處。
Resource
l         加入到 Eclipse 平台社區並從 eclipse.org 下載 Eclipse Eclipse 平台的源代碼是基於 CPL 的。在 eclipse.org ,你會發現關於 Eclipse 項目的術語和描述,以及一些技術性文章和新聞組等。 Eclipse 平台白皮書是對 Eclipse 組件和功能的詳細介紹;
l         eclipse.org 上下載 CDT Project 的各個組件;
l         eclipse.org newsgroup 中你可以查看關於 CDT 插件的技術性討論和問答;
l         通過為 CDT 的各個組件而創建的 developer mailing lists ,開發者可以參加有關 C/C++ IDE 實現的討論;
l         CDT 項目使用 bugzilla 作為自己的臭蟲和功能需求跟蹤系統,提交一個臭蟲或者功能需求只需在 Eclipsebugzilla page上填寫一份表單;
l         Greg Adams Marc Erickson 撰寫的 "Working the Eclipse Platform" 是對 Eclipse 及其工作原理的介紹;
l         欲了解如何在 Eclipse 中開發應用程序,參考 David Gallardo 撰寫的 "Getting started with the Eclipse Platform"
l         如果你對開發你自己的 Eclipse 插件感興趣,參考 David Gallardo 撰寫的 "Developping Eclipse plug-ins"
l         Red Hat 上下載 Cygwin工具包
l         MinGW.org 上下載 MinGW工具包
l         gnu.org 上學習更多有關 GMake語法的東東;
l         gnu.org 上下載 GUI 調試器 ddd ;
l         下載 GUI 調試器 xxgdb
l         訪問 WebSphere Studio Plug-in Central 可以獲得被檢驗過的可以作為 WebSphere Studio Software 插件的目錄;
l         了解 IBM WebSphere Studio 工具的擴展以獲得如何使用它們的一些幫助信息。由於 IBM WebSphere Studio 工具是構建在 WebSphere Studio 工作台基礎之上的,而 WebSphere Studio 工作台又是以 Eclipse 框架為基礎的,所以你可以很容易的使用 Eclipse 幫助擴展特性擴展產品文檔。參見文章 "Adding Self-Help Support to WebSphere Studio Tools by Extending their Eclipse Help Systems" ;
l         IBM developerworks 上找到更多有關 Eclipse用戶的資源。
關於作者
Pawel Leszek Studio B 作者,獨立軟件顧問,專攻 Linux/Win/Mac OS 系統架構和管理的作家。他在操作系統、程序設計語言、網絡協議等領域具有豐富的經驗,特別是 Lotus Domino DB2 Pawel 還是 Linuxworld 的一系列文章作者和 PC World 波蘭版的 Linux 專欄作家。 Pawel 現與妻子及可愛的小女兒居住在 Warsaw 。任何問題或者建議請發郵件到 pawel.leszek@ipgate.pl


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM