Cscope 具有纯正的 Unix 血统, 它最早是由贝尔实验室为 PDP-11 计算机开发的, 后来成为商用的 AT&T Unix 发行版的组成部分直到 2000 年 4 月, 这个工具才由 SCO 公司以 BSD license 开源发行
Cscope 的主页在 http://cscope.sourceforge.net/, 如果你的计算机上没有 cscope, 你可以在此处下载它, 在写本文时, 它的最新版本是 15.8bmac 中可以用 homebrew 一键安装
1cscope 的用法很简单, 首先需要为你的代码生成一个 cscope 数据库在你的项目根目录运行:
cscope -Rbq
2 这个命令会生成三个文件: cscope.out, cscope.in.out, cscope.po.out 其中 cscope.out 是基本的符号索引, 后两个文件是使用 "-q" 选项生成的, 可以加快 cscope 的索引速度
3 在缺省情况下, cscope 在生成数据库后就会进入它自己的查询界面, 我们一般不用这个界面, 所以使用了 "-b" 选项如果你已经进入了这个界面, 按 CTRL-D 退出
4Cscope 在生成数据库中, 在你的项目目录中未找到的头文件, 会自动到 / usr/include 目录中查找如果你想阻止它这样做, 使用 "-k" 选项
5-R 表示索引子目录 R 是递归的首字符简写
在 vim 中使用 cscope:
1 要在 vim 中使用 cscope 的功能, 需要在编译 vim 时选择 "+cscope"vim 的 cscope 接口先会调用 cscope 的命令行接口, 然后分析其输出结果找到匹配处显示给用户
2 在 vim 中使用 cscope 非常简单, 首先调用 "cscope add" 命令添加一个 cscope 数据库, 然后就可以调用 "cscope find" 命令进行查找了
3vim 支持 8 种 cscope 的查询功能, 如下:
s: 查找 C 语言符号, 即查找函数名宏枚举值等出现的地方
g: 查找函数宏枚举等定义的位置, 类似 ctags 所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找 egrep 模式, 相当于 egrep 功能, 但查找速度快多了
f: 查找并打开文件, 类似 vim 的 find 功能
i: 查找包含本文件的文件
4 例如, 我们想在 vim 7.0 的源代码中查找调用 do_cscope() 函数的函数, 我们可以输入:":cs find c do_cscope", 回车后发现没有找到匹配的功能, 可能并没有函数调用 do_cscope() 我们再输入 ":cs find s do_cscope", 查找这个 C 符号出现的位置, 现在 vim 列出了这个符号出现的所有位置
5 我们还可以进行字符串查找, 它会双引号或单引号括起来的内容中查找还可以输入一个正则表达式, 这类似于 egrep 程序的功能, 但它是在交叉索引数据库中查找, 速度要快得多
6vim 提供了一些选项可以调整它的 cscope 功能:
cscopeprg 选项用于设置 cscope 程序的位置
cscopequickfix 设定是否使用 quickfix 窗口来显示 cscope 的结果, 详情请 ":help cscopequickfix";
如果你想 vim 同时搜索 tag 文件以及 cscope 数据库, 设置 cscopetag 选项;
cscopetagorder 选项决定是先查找 tag 文件还是先查找 cscope 数据库设置为 0 则先查找 cscope 数据库, 设置为 1 先查找 tag 文件我通常设置为 1, 因为在 tag 文件中查找到的结果, 会把最佳匹配列在第一位
7vim 的手册中给出了使用 cscope 的建议方法, 使用命令 ":help cscope-suggestions" 查看
- Using Cscope on large projects (example: the Linux kernel):http://cscope.sourceforge.net/large_projects.html
- the vim+cscope tutorial:http://cscope.sourceforge.net/cscope_vim_tutorial.html
来源: http://www.bubuko.com/infodetail-2498381.html