这篇博文和前面的篇文章是衔接的,也算是一点点补充吧.
在前文中说过关于阅读源码可以提高自己的修养~ 对于源码的阅读,无非就是选中一个自己认为适合自己的源码包,
然后去阅读和学习.这里就有一个问题了,你使用什么样子的工具阅读呢? 使用vi? 或者是win下的记事本?
虽然很多的源码都是模块化开发的,在阅读的时候选中一个小模块,然后慢慢琢磨就可以了.但是在源码阅读的过程中
总是需要查找的功能的,一般的文本编辑器只能实现在一个文件中的指定查找,功能有限.不过,你也可以使用IDE阅读
源码,方法很多,随自己喜欢吧.其实,我们还是有其他选择的.
解决的办法是什么呢? emacs/vim会给我们答案.
我已经不使用vim好久了,或者说更多的时间我选择使用emacs.个人感觉emacs慢慢有节奏的按键操作,可以让我体验coding
的快乐.那种感觉是vim不能给的,因为vim使用起来有点暴力~
取决于你的选择,我的建议是:emacs优雅,vim更注重效率.可随自己喜欢挑选一个.
emacs + cscope + xcscope 是源码阅读的不错选择.配置也相当的简单.
由于我使用的是ubuntu 12.04 所以配置工作也都是在此环境下面完成的,仅供参考.
sudo apt-get install cscope*
xcscope是cscope插件的扩展:[link:http://www.emacswiki.org/emacs/xcscope+.el]]
怎么去结合emacs使用cscope阅读源码呢? 先看一下关于xcscope的一些操作说明( 当然,这些说明在emacs的菜单选项中也是有的~ )
1 C-c s s Find symbol. 2 C-c s d Find global definition. 3 C-c s g Find global definition (alternate binding). 4 C-c s G Find global definition without prompting. 5 C-c s c Find functions calling a function. 6 C-c s C Find called functions (list functions called 7 from a function). 8 C-c s t Find text string. 9 C-c s e Find egrep pattern. 10 C-c s f Find a file. 11 C-c s i Find files #including a file. 12 13 search: 14 C-c s b Display *cscope* buffer. 15 C-c s B Auto display *cscope* buffer toggle. 16 C-c s n Next symbol. 17 C-c s N Next file. 18 C-c s p Previous symbol. 19 C-c s P Previous file. 20 C-c s u Pop mark.
下面就就结合glib的源码说说如何使用emacs + xcscope+ cscope 组合的使用方法:
1. 随便打开源码包中的一个文件: 我打开的是glib/glib/gthread.h (我的glib源码包是使用git clone的,和官网下载的源码包目录有点不一样,请自己注意~)
2. 设定初始化目录,也就是cscope + xcscope插件生成tag的检测范围的限定.这可以根据你自己的需求去做,我的选择是把源码包设置为初始化目录. ( C-c s a)
3. 为文件生成检索tag. 一般我会选择执行两条命令(C-c s L and C-c s i)
有的时候,如果源码包很大个的话,执行的过程可能需要一些时间,不过还是很快的.
4. 执行完上面的步骤之后,就可以随意在源码包中查找关键词了.(C-c s s + key )
如上图所示,会帮你查找到所有关键词出现的位置.这时候就是很据你自己的需求进行跳转.我想,对于辨别查找自己需要的源码这种能力,还是有的,不会在一大堆tag面前无力~