Effective Eclipse CDT (一)

本文中用eclipse代指eclipse CDT。

本文内容基于当前最新的eclipse neon版本, 请于eclipse官网下载,并持续跟踪eclipse最新版本。

Install

由于windows和mac系统上的安装相对简单,下面的安装过程基于linux系统。我个人在ubuntu14.04下经过测试。

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,然后点击右上角的Workbench图标进入主界面。

点击菜单栏 Window -> Preferences,在里面进行eclipse的全局配置。

设置字体

有美感的程序员装好IDE后的第一要事肯定是先配置一个好字体。编码最好使用等宽字体,如果你是在mac系统上,那么默认的字体就很不错;而Ubuntu下自带的”Ubuntu Mono“也很漂亮;Windows上自带的等宽字体"Courier"则有些中规中矩。更换字体时看到名字里面带有mono的基本都是等宽字体。

如果想选跨平台的第三方字体,值得推荐的有”Inconsolata“,”Consolas“和”Source Code Pro“。这些字体系统没有自带,需要自行安装。

本文推荐”Source Code Pro“,它是Adobe发布的一款面向程序员的非常漂亮的开源字体集,可以在github下载。

安装字体

  • Windows系统:

将下载下来的”source-code-pro/ttf“目录里的字体文件拷贝到系统盘下”windows/fonts“目录下即可完成安装;

  • Linux系统:

在个人主目录下建立.fonts目录,将下载下来的”source-code-pro/ttf“里面的字体文件拷贝进去即可;

  • Mac系统:

打开 ”Finder -> 应用程序 -> 字体册“; 添加下载下来的”source-code-pro“目录,即可完成安装;

安装好字体后,重启eclipse。

修改字体

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

点击Edit,选择自己喜欢的字体;字号一般设置为10或者11比较合适;

修改快捷键

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

在上面位置进行快捷键设置,我一般直接使用eclipse默认的。

在ubuntu下,eclipse常用的复制行的快捷键Ctrl + Alt + Down和系统默认的切换工作区的快捷键冲突了。由于我一般不用ubuntu的扩展工作区,所以我会把ubuntu自身的快捷键进行修改。具体在 系统设置 -> 键盘 -> 快捷键 -> 导航 -> 切换至上侧工作区 以及 切换至下侧工作区,将这两个快捷键删除,或者改成别的。

设置代码风格

代码风格是一个仁者见仁的事情,下文的所有配置都是我比较喜欢的风格,你可以根据自己的口味进行调整。

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

Displayed tab witdth设为4; 勾选上Insert spaces for tabs 以及 Show line number

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

在这里配置各种默认代码模板,包含文件头注释模板、函数头注释模板、以及各种文件模板。例如我一般会在这里对C++默认的头文件模板进行修改,去掉文件头注释,去掉文件结尾对”include guard“的重复注释等等。

在这里可以点击Export将自己配置好的Code Templates导出去,以便备份和共享。

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

在这里设置默认的代码格式化风格。由于我个人喜欢大括号单独一行对齐,所以一般基于eclipse自带的BSD/Allman模板进行修改。

如上图,在Active profile中选择BSD/Allman后,点击Edit进行修改。我一般的修改如下:

- 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 : 设为0
        - Default indentation for initializer lists : 设为0

最后对设置好的code formatter起个新名字。可以在这里点击Export将配置好的formatter导出去,以便备份和共享。

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

Code -> Include Guard里面,将Include guard macro name设置为Unique identifier

这样eclipse自动生成的头文件模板里面,头文件的include guard默认为一个随机的全局唯一UUID,这样设置的原因是当你重命名头文件或者修改头文件路径后,不用再去手动修改头文件的include guard,避免include guard不小心重名导致的难以定位的编译问题。

另外在当前页面下,可以配置C++头文件名、源文件名以及测试文件名之间的规则关系,见下图。在开发的过程中遵守这里配置的文件命名规范,会有很多好处。首先eclipse靠这里的文件命名规则关联类的头文件和实现文件。当你的类名、头文件名、实现文件名和测试文件名按照上图中的配置规则保持一致,重命名类名后,eclipse会自动关联修改头文件名,实现文件名和测试文件名以及所有对头文件的include路径名。

这里我一般会将 Files -> C\++ Test FilePrefix设置为"Test", Suffix设置为".cpp",让测试文件名称保持 ”Test*.cpp“。

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

该标签下设置和头文件包含相关的选项。Eclipse默认对自动添加的头文件按照设置的规则进行排序。如果不想要自动排序,那么就勾选掉 Allow reordering of includes

Organize Includes -> Include Style中可以设置头文件包含规则和顺序。

Grouping标签页里面,我一般会设置所有的头文件类型以尖括号包含(将Use angle brackets打钩)。另外,设置系统头文件和前面所有的空一行(选择System Header,将Separate from previous includes by a blank line打钩);

Ordering标签页中,我会调整头文件的包含顺序,将系统文件放在最后,如下图:

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

该标签下可以设置语法配色方案。我一般只改一点,就是宏引用的颜色。因为宏一般被我作为语法糖来来用,所以希望其色彩和关键字比较像(偏暗红,类似关键字,但有所区别)。修改如下:

Code -> Macro references 下,将EnableBold打钩,然后点击Color,将颜色调为#BF4040

Others

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

在该标签里面可以设置eclipse解析文件规模的一些选项。最关键的一个是Enable scalability mode when the number of lines in the file is more than用来设置默认最大完全解析的文件行数,默认是5000。对超过5000行的文件eclipse为了避免消耗资源过多将会只进行部分解析,至于解析哪些,可以在下面进行设置。在eclipse下开发,不建议产生大文件。如果是阅读遗留代码,可以根据自己系统资源能力将5000改的更大。

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

在这里New一种新的代码template,取名cn,Pattern设为${file_base}::。这样当你类名(假如MyClass)和文件名(MyClass.cpp)相同的时候,你在文件内敲cn会自动补全为MyClass::。这样在实现文件内写类的成员函数实现时会比较方便。

这里还可以配置其它代码块模板,配置好后可以点Export将其导出。

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

这里可以增加新的文件类型。我一般会用*.tcc类型的文件做模板的实现,所以在这里增加新的文件类型。点击New,创建新的文件类型*.tcc,Type设为C\++ Header File

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

关于workspace的设置,有两个可以关注。一个是设置eclipse构建前自动保存所有文件Save automatically before build;另一个是当代码注释中出现中文乱码时,尝试修改最底下的 Text file encoding,将其改为GBK。建议最好还是不要用中文注释的好,避免编码不一致带来的乱码问题。

  • ** 导出配置 **

前面介绍的Code Templates, Code Formatter, Editor Templates需要单独导出成xml文件!

其余的主要配置,可以通过 File -> Export -> General -> Preferences 进行导出。勾选你要导出的选项,然后将其导出为一个epf文件。

关于前面介绍的Code Formatter和全局配置我已经导出了,上传在github

其中global-config.epf是全局配置,选择 File -> Import -> General -> Preferences 将其导入eclipse。

code-formatter.xml是formatter的模板,在Window -> Preferences -> C/C++ -> Code Style -> Formatter中点击Import将其导入。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,745评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • 一、简介 eclipse可谓是Java开发界的神器,基本占据了大部分的Java开发市场,而且其官方还对其他语言提供...
    简单应用阅读 2,189评论 0 14
  • 斷橋初見碎羅衣, 細雨新題, 舊夢堪尋何處覓? 依稀, 深院孤燈悵別離。 別後天涯無限期。 西窗誰憶? 秋心剪影對...
    鱼玄机会读心阅读 239评论 1 1
  • 其实我们不是在追求爱情平等,因为我们都明白哪有完全平等的爱情呢,总有一个人更喜欢对方一点。 我们期望的是有对等的承...
    董江阅读 147评论 3 0