在Windows平台上做软件开发的同行都知道,有一款“简约而不简单”的源代码编辑、浏览、分析软件Source Insinght。这款软件的特色就不再这里做详细介绍了,套用一句经典广告词:“不用不知道,用了吓一跳”。无可厚非,这是一款"牛"系列的软件,无可厚非的另一点是:需要¥(不言自明……大家都懂的)。今天要介绍的cscope呢,是一款主要适用于Linux平台的软件,毋庸置疑的是这款软件是开源的,毋庸置疑的另一点是:不需要¥(无需多说……大家多支持开源软件)。它的功能和Source Insight相似,用于源代码的编辑、浏览、分析,是Linux程序员用做软件开发的“利器”。
废话不多说,咱们进入正题,这里将介绍cscope相关的三款软件 :-)
cscope简介:cscope是一款基于字符界面的源代码浏览工具,尽管它最初是为C代码的搜索(包括lex、yacc文件)设计的,但是也可以用于对C++代码的搜索。用cscope你可以轻易地搜索到你的标识符是在哪里被定义和使用的,它可以轻而易举地解决以下问题:
- 这个变量在哪里被使用?
- 这个预处理符号的值是什么?
- 这个函数都在哪些源代码文件中出现过?
- 都有哪些函数调用了这个函数?
- "out of space"的消息是从哪里来的?
- 这个源文件在在目录结构中的位置?
- 都有哪些源文件包含了这个头文件?
- 增加基于CMake的Makefile生成系统
- 内建了用于创建倒置索引的排序功能
- curses可选化,从而使得min-cscope能够轻易地在不支持curses兼容库的平台(如:Windows)上编译安装
排雷区:对一些在文章中出现但不在文章主题范围内的技术名词、程序库、关键字的简单解释,深入了解需要自己动手
- lex: LEXical( ['leksikəl] adj.词汇的, 词典的)compiler的缩写形式,是Unix平台下非常著名的词法分析器生成工具。用它可以生成一个(自定义语言的)词法分析器的C源码,经过C编译器编译后就可以直接使用于编译器系统。相关知识在编译原理相关的书籍、文档中可以找到。
- Yacc:Yet Another Compiler Compiler的缩写形式,是Unix平台下非常著名的用于生成编译器的编译器。你可以用它和lex配合使用编写一款自己想怎么定义就怎么定义的语言(还是要遵循一定规则的),这款语言就可以用Yacc生成的编译器进行编译,然后可以在你的规则下正常运行。更多文档请自己动手,这里提供一个参考:IBM文档库
- curses:curses是一个在Linux/Unix下广泛应用的图形函数库,它的名字起源于"cursor optimization(即光标优化)“。 最早由美国伯克利大学的Bill Joy和Ken Arnold编写的, 用来处理一个游戏rogue的屏幕显示。后来贝尔实验室的Mark Horton在System III Unix中重新编写了curses。现在几乎所有的Unix,Linux操作系统都带了curses函数库,curses也加入了对鼠标的支持,一些菜单和面板的处理。可以说, curses是Linux终端图形编程的不二选择(比如著名的文字编辑器 vi 就是基于curses编的)。
另附一个网友的安装教程:http://blog.chinaunix.net/uid-25885064-id-2747802.html
再贴一张截图: