Effective Eclipse CDT (一)

本文中用eclipse代指eclipse CDT。

本文內(nèi)容基于當(dāng)前最新的eclipse neon版本, 請于eclipse官網(wǎng)下載,并持續(xù)跟蹤eclipse最新版本。

Install

由于windows和mac系統(tǒng)上的安裝相對簡單,下面的安裝過程基于linux系統(tǒng)。我個人在ubuntu14.04下經(jīng)過測試。

Eclipse安裝之前需要先安裝JDK

Install JDK

  • Download JDK
http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • Install JDK
sudo mkdir -p /usr/local/lib/java
sudo tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/lib/java
cd /usr/local/lib/java && sudo ln -s jdk1.8.0_91 default
  • Export JAVA_HOME and PATH
echo 'export JAVA_HOME=/usr/local/lib/java/default' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
  • Verify
$ java -version

Install Eclipse

  • Download eclipse
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neonr
  • Install eclipse
sudo mkdir -p /usr/local/eclipse
sudo tar zxvf eclipse-cpp-neon-R-linux-gtk-x86_64.tar.gz -C /usr/local/eclipse
cd /usr/local/eclipse && sudo ln -s eclipse default
  • Add eclipse to PATH
echo "export ECLIPSE_HOME=/usr/local/eclipse/default" >> ~/.bashrc
echo "export PATH=$ECLIPSE_HOME:$PATH" >> ~/.bashrc
source ~/.bashrc
  • Verify
eclipse &

Global Configuration

初次打開eclipse,如下圖。勾掉右下角的Always show Welcome at start up,然后點(diǎn)擊右上角的Workbench圖標(biāo)進(jìn)入主界面。

點(diǎn)擊菜單欄 Window -> Preferences,在里面進(jìn)行eclipse的全局配置。

設(shè)置字體

有美感的程序員裝好IDE后的第一要事肯定是先配置一個好字體。編碼最好使用等寬字體,如果你是在mac系統(tǒng)上,那么默認(rèn)的字體就很不錯;而Ubuntu下自帶的”Ubuntu Mono“也很漂亮;Windows上自帶的等寬字體"Courier"則有些中規(guī)中矩。更換字體時看到名字里面帶有mono的基本都是等寬字體。

如果想選跨平臺的第三方字體,值得推薦的有”Inconsolata“,”Consolas“和”Source Code Pro“。這些字體系統(tǒng)沒有自帶,需要自行安裝。

本文推薦”Source Code Pro“,它是Adobe發(fā)布的一款面向程序員的非常漂亮的開源字體集,可以在github下載。

安裝字體

  • Windows系統(tǒng):

將下載下來的”source-code-pro/ttf“目錄里的字體文件拷貝到系統(tǒng)盤下”windows/fonts“目錄下即可完成安裝;

  • Linux系統(tǒng):

在個人主目錄下建立.fonts目錄,將下載下來的”source-code-pro/ttf“里面的字體文件拷貝進(jìn)去即可;

  • Mac系統(tǒng):

打開 ”Finder -> 應(yīng)用程序 -> 字體冊“; 添加下載下來的”source-code-pro“目錄,即可完成安裝;

安裝好字體后,重啟eclipse。

修改字體

  • ** Window -> Preferences -> General -> Appearance -> Colors and Fonts -> C/C++ -> Editor -> C/C++ Editor Text Font **

點(diǎn)擊Edit,選擇自己喜歡的字體;字號一般設(shè)置為10或者11比較合適;

修改快捷鍵

  • ** Window -> Preferences -> General -> Keys **

在上面位置進(jìn)行快捷鍵設(shè)置,我一般直接使用eclipse默認(rèn)的。

在ubuntu下,eclipse常用的復(fù)制行的快捷鍵Ctrl + Alt + Down和系統(tǒng)默認(rèn)的切換工作區(qū)的快捷鍵沖突了。由于我一般不用ubuntu的擴(kuò)展工作區(qū),所以我會把ubuntu自身的快捷鍵進(jìn)行修改。具體在 系統(tǒng)設(shè)置 -> 鍵盤 -> 快捷鍵 -> 導(dǎo)航 -> 切換至上側(cè)工作區(qū) 以及 切換至下側(cè)工作區(qū),將這兩個快捷鍵刪除,或者改成別的。

設(shè)置代碼風(fēng)格

代碼風(fēng)格是一個仁者見仁的事情,下文的所有配置都是我比較喜歡的風(fēng)格,你可以根據(jù)自己的口味進(jìn)行調(diào)整。

  • ** Window -> Preferences -> General -> Editors -> Text Editors **

Displayed tab witdth設(shè)為4; 勾選上Insert spaces for tabs 以及 Show line number

  • ** Window -> Preferences -> C/C++ -> Code Style -> Code Templates **

在這里配置各種默認(rèn)代碼模板,包含文件頭注釋模板、函數(shù)頭注釋模板、以及各種文件模板。例如我一般會在這里對C++默認(rèn)的頭文件模板進(jìn)行修改,去掉文件頭注釋,去掉文件結(jié)尾對”include guard“的重復(fù)注釋等等。

在這里可以點(diǎn)擊Export將自己配置好的Code Templates導(dǎo)出去,以便備份和共享。

  • ** Window -> Preferences -> C/C++ -> Code Style -> Formatter **

在這里設(shè)置默認(rèn)的代碼格式化風(fēng)格。由于我個人喜歡大括號單獨(dú)一行對齊,所以一般基于eclipse自帶的BSD/Allman模板進(jìn)行修改。

如上圖,在Active profile中選擇BSD/Allman后,點(diǎn)擊Edit進(jìn)行修改。我一般的修改如下:

- Indentation:
    - Tab policy : 改為 ”Spaces only“
    - Statements within switch body : 打上勾
    - Declarations within namespace definition: 打上勾
    - Empty lines : 打上勾
- Braces:
    - Initializer list : 改為 ”Same line“
- New Lines:
    - before colon in constructor initialzer list : 打上勾
- Control Statements:
    - Insert new line before catch in a try statement : 打上勾
    - Keep simple if on one line : 打上勾
- Line Wrapping:
    - Function declarations -> Constructor initializer list :
        - Default indentation for wrapped lines : 設(shè)為0
        - Default indentation for initializer lists : 設(shè)為0

最后對設(shè)置好的code formatter起個新名字。可以在這里點(diǎn)擊Export將配置好的formatter導(dǎo)出去,以便備份和共享。

  • ** Window -> Preferences -> C/C++ -> Code Style -> Name Style **

Code -> Include Guard里面,將Include guard macro name設(shè)置為Unique identifier

這樣eclipse自動生成的頭文件模板里面,頭文件的include guard默認(rèn)為一個隨機(jī)的全局唯一UUID,這樣設(shè)置的原因是當(dāng)你重命名頭文件或者修改頭文件路徑后,不用再去手動修改頭文件的include guard,避免include guard不小心重名導(dǎo)致的難以定位的編譯問題。

另外在當(dāng)前頁面下,可以配置C++頭文件名、源文件名以及測試文件名之間的規(guī)則關(guān)系,見下圖。在開發(fā)的過程中遵守這里配置的文件命名規(guī)范,會有很多好處。首先eclipse靠這里的文件命名規(guī)則關(guān)聯(lián)類的頭文件和實(shí)現(xiàn)文件。當(dāng)你的類名、頭文件名、實(shí)現(xiàn)文件名和測試文件名按照上圖中的配置規(guī)則保持一致,重命名類名后,eclipse會自動關(guān)聯(lián)修改頭文件名,實(shí)現(xiàn)文件名和測試文件名以及所有對頭文件的include路徑名。

這里我一般會將 Files -> C\++ Test FilePrefix設(shè)置為"Test", Suffix設(shè)置為".cpp",讓測試文件名稱保持 ”Test*.cpp“。

  • ** Window -> Preferences -> C/C++ -> Code Style -> Organize Includes **

該標(biāo)簽下設(shè)置和頭文件包含相關(guān)的選項(xiàng)。Eclipse默認(rèn)對自動添加的頭文件按照設(shè)置的規(guī)則進(jìn)行排序。如果不想要自動排序,那么就勾選掉 Allow reordering of includes

Organize Includes -> Include Style中可以設(shè)置頭文件包含規(guī)則和順序。

Grouping標(biāo)簽頁里面,我一般會設(shè)置所有的頭文件類型以尖括號包含(將Use angle brackets打鉤)。另外,設(shè)置系統(tǒng)頭文件和前面所有的空一行(選擇System Header,將Separate from previous includes by a blank line打鉤);

Ordering標(biāo)簽頁中,我會調(diào)整頭文件的包含順序,將系統(tǒng)文件放在最后,如下圖:

  • ** Window -> Preferences -> C/C++ -> Editor -> Syntax Coloring **

該標(biāo)簽下可以設(shè)置語法配色方案。我一般只改一點(diǎn),就是宏引用的顏色。因?yàn)楹暌话惚晃易鳛檎Z法糖來來用,所以希望其色彩和關(guān)鍵字比較像(偏暗紅,類似關(guān)鍵字,但有所區(qū)別)。修改如下:

Code -> Macro references 下,將EnableBold打鉤,然后點(diǎn)擊Color,將顏色調(diào)為#BF4040

Others

  • ** Window -> Preferences -> C/C++ -> Editor -> Scalability **

在該標(biāo)簽里面可以設(shè)置eclipse解析文件規(guī)模的一些選項(xiàng)。最關(guān)鍵的一個是Enable scalability mode when the number of lines in the file is more than用來設(shè)置默認(rèn)最大完全解析的文件行數(shù),默認(rèn)是5000。對超過5000行的文件eclipse為了避免消耗資源過多將會只進(jìn)行部分解析,至于解析哪些,可以在下面進(jìn)行設(shè)置。在eclipse下開發(fā),不建議產(chǎn)生大文件。如果是閱讀遺留代碼,可以根據(jù)自己系統(tǒng)資源能力將5000改的更大。

  • ** Window -> Preferences -> C/C++ -> Editor -> Templates **

在這里New一種新的代碼template,取名cn,Pattern設(shè)為${file_base}::。這樣當(dāng)你類名(假如MyClass)和文件名(MyClass.cpp)相同的時候,你在文件內(nèi)敲cn會自動補(bǔ)全為MyClass::。這樣在實(shí)現(xiàn)文件內(nèi)寫類的成員函數(shù)實(shí)現(xiàn)時會比較方便。

這里還可以配置其它代碼塊模板,配置好后可以點(diǎn)Export將其導(dǎo)出。

  • ** Window -> Preferences -> C/C++ -> File Types **

這里可以增加新的文件類型。我一般會用*.tcc類型的文件做模板的實(shí)現(xiàn),所以在這里增加新的文件類型。點(diǎn)擊New,創(chuàng)建新的文件類型*.tcc,Type設(shè)為C\++ Header File

  • ** Window -> Preferences -> General -> Workspace **

關(guān)于workspace的設(shè)置,有兩個可以關(guān)注。一個是設(shè)置eclipse構(gòu)建前自動保存所有文件Save automatically before build;另一個是當(dāng)代碼注釋中出現(xiàn)中文亂碼時,嘗試修改最底下的 Text file encoding,將其改為GBK。建議最好還是不要用中文注釋的好,避免編碼不一致帶來的亂碼問題。

  • ** 導(dǎo)出配置 **

前面介紹的Code Templates, Code Formatter, Editor Templates需要單獨(dú)導(dǎo)出成xml文件!

其余的主要配置,可以通過 File -> Export -> General -> Preferences 進(jìn)行導(dǎo)出。勾選你要導(dǎo)出的選項(xiàng),然后將其導(dǎo)出為一個epf文件。

關(guān)于前面介紹的Code Formatter和全局配置我已經(jīng)導(dǎo)出了,上傳在github

其中g(shù)lobal-config.epf是全局配置,選擇 File -> Import -> General -> Preferences 將其導(dǎo)入eclipse。

code-formatter.xml是formatter的模板,在Window -> Preferences -> C/C++ -> Code Style -> Formatter中點(diǎn)擊Import將其導(dǎo)入。

Effective Eclipse CDT (二)
Effective Eclipse CDT (三)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,662評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,785評論 18 139
  • 一、簡介 eclipse可謂是Java開發(fā)界的神器,基本占據(jù)了大部分的Java開發(fā)市場,而且其官方還對其他語言提供...
    簡單應(yīng)用閱讀 2,230評論 0 14
  • 斷橋初見碎羅衣, 細(xì)雨新題, 舊夢堪尋何處覓? 依稀, 深院孤燈悵別離。 別後天涯無限期。 西窗誰憶? 秋心剪影對...
    魚玄機(jī)會讀心閱讀 256評論 1 1
  • 其實(shí)我們不是在追求愛情平等,因?yàn)槲覀兌济靼啄挠型耆降鹊膼矍槟兀傆幸粋€人更喜歡對方一點(diǎn)。 我們期望的是有對等的承...
    董江閱讀 150評論 3 0