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
了解
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"
;
關於作者
Pawel Leszek
,
Studio B
作者,獨立軟件顧問,專攻
Linux/Win/Mac OS
系統架構和管理的作家。他在操作系統、程序設計語言、網絡協議等領域具有豐富的經驗,特別是
Lotus Domino
和
DB2
。
Pawel
還是
Linuxworld
的一系列文章作者和
PC World
波蘭版的
Linux
專欄作家。
Pawel
現與妻子及可愛的小女兒居住在
Warsaw
。任何問題或者建議請發郵件到
pawel.leszek@ipgate.pl
。