注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

【Copy】用emacs做为C/C++集成开发环境  

2009-01-04 17:55:41|  分类: L-Emacs |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
做为嵌入式软件开发者,我想许多人会和我一样,在选择开发工具时徘徊过。因为嵌入式软件的开发和PC上的软件开发很不一样。特别是 Windows软件开发时,可以有许许多多的集成开发环境可以选择。有时候甚至是不需要思考的选择。比如你要开发MFC程序,那么你的选择只有VC++。
 
嵌入式开发还有一个特点,就是开发环境经常会发生改变。这个项目在windows下开发,下一个项目可能就转向Linux了。因此,我这里要选 择的是一个在Windows和Linux下使用方式保持一致的开发工具。因为你一旦熟悉了一种开发环境,你就可以高效的进行代码开发。
摆在眼前的,有两个非常优秀的IDE:eclipse和emacs。这两者都是跨平台的。而且这两者在世界范围内有着十分广泛的使用者。我的选择是emacs。当然,并不是说eclipse不好。因为我不是很了解eclipse,也暂时没有时间去学。
 
本文主要教你一步步搭建强大而方便的emacs开发环境,针对C/C++语言和Windows操作系统。Linux下搭建方法类似,并且更为方便,因为一般的Linux发行版都带有emacs。
 
 
获得emacs
 
 
emacs有两种主流版本,一个是Gnu emacs,一个是Xemacs。其中Gnu emacs使用者较多,我们一般说的emacs就是GNU emacs。以下说到的emacs就默认是Gnu emacs了。
emacs的官方网站是:http://www.gnu.org/software/emacs/
在这个网站上,你可以下载到各个平台的最新稳定版的emacs,包括windows和linux。在我写这段文字的时候,emacs最新稳定版 是21.4。然而,正在开发中的cvs版中有许多我们非常感兴趣的新特性。一个是我们期待已久的unicode的支持,一个是我们同样期待已久的GTK2 的支持。而且就我使用而言,最新的CVS版已经相当的稳定。那么我们是不是必须用CVS工具提取CVS代码然后自己编译生成emacs可执行程序呢?不 用!有一个叫做ntemacs的项目已经帮我们做了这个工作了。
ntemacs的官方网站是:http://www.ntemacs.sf.net
下载最新的ntemacs,将其解压到任意一个目录就可以使用了。运行emacs的脚本是 bin/runemacs.bat。你可以将这个脚本创建一个快捷方式到sendto文件 夹。
还有一个可供选择的emacs的windows版本是winmacs。他的下载地址是http://sourceforge.net/projects/winmacs。这个版本有一个问题,你必须设置HOME系统变量,将其设置为c:\
 
 
获得辅助插件
 
 
纯粹的emacs已经足够强大,借助其cc-mode已经可以进行C/C++开发。但是我们前面说过,要进行高效的开发。那么,我们需要一些辅助的“插件”。
 
cscope:这是一个可以使emacs实现类似source insight那种符号查找等功能的软件。它最常用的功能就是找到任何一个变量、函数、结构体等是在哪里被定义,被引用的。cscope的官方网站在http://cscope.sourceforge.net/。 这里可以下载到cscope的源码,源码中有一个叫做xcscope的目录,将其拷贝到你emacs的site-lisp目录下。xcscope是 lisp脚本,它是与平台无关的语言。然而,这个脚本依赖cscope可执行文件。但cscope是不能直接在windows下运行的。我在网上找了很 久,终于在一个俄罗斯网站上找到了cscope的windows编译。这个网站是:http://iamphet.nm.ru/cscope/index.html。下载后将cscope.exe解压到emacs的bin目录下即可。

cedet+ecb:这两个“插件”无比强大,专门为emacs作为IDE而设计的。我现在只使用了其中很小一部分功能,就领略到了它带给我的高效。官方网站:http://ecb.sourceforge.net/http://cedet.sourceforge.net/。下载这两个插件,和xcscope一样,复制到site-lisp目录。
 
session : 这个插件可以让你的emacs显示最近编辑和最近访问的文件。官方网站是:http://sourceforge.net/projects/emacs-session
 
doxymacs : 这是一个按照doxy风格生成注释的工具。使代码可以更方便的生成文档。官方网站是:http://sourceforge.net/projects/doxymacs
 
 
配置emacs
 
 
一切就绪后,就需要配置emacs了。在C盘根目录下建立一个.emacs文本文件,输入配置内容。以下是我的配置文件内容:
(require 'xcscope) ;;加载xcscope
(require 'cedet) ;;加载cedet
(require 'ecb) ;;加载ecb
(require 'session) ;;加载session
(add-hook 'after-init-hook 'session-initialize) ;; 启动时初始化session
(require 'doxymacs) ;; 启动doxymacs
(add-hook 'c-mode-common-hook 'doxymacs-mode) ;; 启动doxymacs-mode
(add-hook 'c++-mode-common-hook 'doxymacs-mode) ;; 启动doxymacs-mode
(desktop-load-default) ;;读取默认desktop设置
(desktop-read) ;;读取当前目录保存的desktop设置
(set-face-background 'default "LightCyan3") ;;设置背景色为 浅青色3
(set-face-font 'default "-outline-新宋体-normal-r-normal-normal-*-*-96-96-c-*-iso8859-1") ;;设置字体为新宋体 ( Only for windows )
(global-set-key [f12] 'ecb-activate) ;;定义F12键为激活ecb
(global-set-key [C-f12] 'ecb-deactivate) ;;定义Ctrl+F12为停止ecb
(global-set-key [f11] 'delete-other-windows) ;;设置F11为删除其它窗口
(global-set-key [(meta return)] 'semantic-ia-complete-symbol-menu) ;;设置Alt+Enter为自动补全菜单
(global-set-key [C-\;] 'ecb-goto-window-edit-last) ;;切换到编辑窗口
(global-set-key [C-\'] 'ecb-goto-window-methods) ;;切换到函数窗口
(global-set-key [C-.] 'cscope-find-global-definition) ;;搜索定义
(global-set-key [C-,] 'cscope-pop-mark) ;; 跳出转向
(enable-visual-studio-bookmarks) ;; 启动VS书签子程序
;;(setq semanticdb-project-roots (list "d:/work")) ;; 设置cemanticdb的扫描根目录
(add-hook 'c-mode-common-hook ( lambda() ( c-set-style "k&r" ) ) ) ;;设置C语言默认格式
(add-hook 'c++-mode-common-hook ( lambda() ( c-set-style "k&r" ) ) ) ;;设置C++语言默认格式
 
 
常用快捷键
 
 
(这部分还没有时间写,事实上学习emacs基本上就是学习其快捷键和命令。这些东西网上有很多,书上也有很多)
 
 
参考资料
 
 
这里只是设计了emacs的皮毛,想要获得更加了解emacs这个强大的编辑器,学习更多emacs的使用技巧请参考以下资料:
《学习GNU emacs》机械工业出版社
《生活在emacs中》IBM开发者网

 原文地址 http://blog.chinaunix.net/u/14721/showart_178870.html
  评论这张
 
阅读(320)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017