如何使用 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 安裝之上工作。Solaris 和 QNX 要求您從網際網路下載並安裝其特定的 GCC、GNU Make binutils 和 GDB 移植(請參閱參考資料以獲得連結)。 假設您安裝了適當的 Java SDK/JRE 和 Eclipse 平台 SDK,並且它們都正常運行。CDT 以兩種“方式”可用:穩定的發行版和試運行版(nightly build)。試運行版未經完全測試,但它們提供了更多的功能並改正了當前錯誤。安裝之前,請檢查磁碟上是否存在先前版本的 CDT,如果存在,請確保完全除去它。因為 CDT 沒有可用的卸載程式,所以需要手工除去它。為了檢查先前版本是否存在,轉至 CDT 外掛程式所駐留的目錄:eclipse/plugins 。接著,除去所有以 org.eclipse.cdt 名稱開頭的目錄。需要做的最後一件事情是從 workspace/.metadata/.plugins 和 features 除去 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++ 語言文法結構的定義。您也可以定義自己的代碼模板來擴充您自己的快速鍵,如用於
author 或 date 關鍵字的快速鍵。在 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)。 |
|