用 Eclipse 平台進行 C/C++ 開發

來源:互聯網
上載者:User
 

如何使用 C/C++ 開發工具箱(CDT)

層級:中級

Pawel Leszek(pawel.leszek@ipgate.pl)
獨立軟體顧問
2003 年 7 月

我們將概述如何在 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 安裝之上工作。SolarisQNX 要求您從網際網路下載並安裝其特定的 GCC、GNU Make binutils 和 GDB 移植(請參閱參考資料以獲得連結)。

假設您安裝了適當的 Java SDK/JRE 和 Eclipse 平台 SDK,並且它們都正常運行。CDT 以兩種“方式”可用:穩定的發行版和試運行版(nightly build)。試運行版未經完全測試,但它們提供了更多的功能並改正了當前錯誤。安裝之前,請檢查磁碟上是否存在先前版本的 CDT,如果存在,請確保完全除去它。因為 CDT 沒有可用的卸載程式,所以需要手工除去它。為了檢查先前版本是否存在,轉至 CDT 外掛程式所駐留的目錄:eclipse/plugins。接著,除去所有以 org.eclipse.cdt 名稱開頭的目錄。需要做的最後一件事情是從 workspace/.metadata/.pluginsfeatures 除去 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++ 語言文法結構的定義。您也可以定義自己的代碼模板來擴充您自己的快速鍵,如用於 authordate 關鍵字的快速鍵。在 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 平台社區,並從 eclipse.org 下載該平台。Eclipse 平台原始碼是根據 Common Public License 特許的。在 eclipse.org 上,您還將找到有關 Eclipse 項目的術語詞彙表和描述,以及技術文章和新聞群組。Eclipse 平台白皮書詳細描述了 Eclipse 的主要組件和功能。

  • 從 eclipse.org 下載 CDT 項目的組件。
  • 請訪問 eclipse.org 上的新聞群組,以擷取與 C/C++ 外掛程式相關的技術討論和問題。
  • 開發人員可以通過為該項目中每個組件所建立的開發人員郵件清單(developer mailing lists)來參與和 C/C++ IDE 實現相關的討論。
  • CDT 項目使用 bugzilla 作為其錯誤和功能跟蹤系統。在 Eclipse bugzilla 頁上輸入錯誤/功能報告與填寫 Web 表單一樣簡單。
  • 有關 Eclipse 平台及其工作原理的入門文章,請參閱由 Greg Adams 和 Marc Erickson 合著的 developerWorks 文章“Working the Eclipse Platform”。
  • 要開始使用 Eclipse 平台開發應用程式,請參閱由 David Gallardo 撰寫的 developerWorks 文章“Getting started with the Eclipse Platform”。
  • 如果您有興趣建立自己的 Eclipse 外掛程式,請參閱由 David Gallardo 撰寫的 developerWorks 文章“開發 Eclipse 外掛程式”。
  • 從 Red Hat 下載 Cygwin 工具箱。
  • 從 MinGW.org 下載 MinGW 工具箱。
  • 在 gnu.org 上學習有關 GNU make 文法的更多知識。
  • 從 gnu.org 下載 ddd GUI 調試器。
  • 下載 xxgdb GUI 調試器。
  • 請訪問 WebSphere Studio Plug-in Central,以擷取已被驗證為“Ready for WebSphere Studio Software”的外掛程式的目錄。
  • 學習 IBM WebSphere Studio 工具的一個擴充,它提供了有助於您使用這些工具的資訊和工具。由於所有 WebSphere Studio 工具都基於 WebSphere Studio 工作台(WebSphere Studio Workbench),而工作台基於 Eclipse 架構,所以很容易通過使用 Eclipse 協助擴充功能來擴充產品文檔。請參閱文章“Adding Self-Help Support to WebSphere Studio Tools by Extending their Eclipse Help Systems”。
  • 請在 developerWorks 上尋找更多的 Eclipse 使用者參考資料。
關於作者
Pawel Leszek 是 Studio B 的一位作家,他是一位專長於 Linux/Win/Mac OS 系統體繫結構和管理的獨立軟體顧問和作家。他具有許多作業系統、程式設計語言和網路通訊協定方面的經驗,尤其是 Lotus Domino 和 DB2 方面的經驗。Pawel 還是 LinuxWorld 上一系列文章的作者,以及 PC World 波蘭版的 Linux 專欄作家。Pawel 和他的妻子以及可愛的小女兒住在華沙。歡迎提問並提出意見;您可以直接給作者發電子郵件(pawel.leszek@ipgate.pl)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.