Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408724
  • 博文数量: 61
  • 博客积分: 1991
  • 博客等级: 上尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-08 12:28
文章分类

全部博文(61)

文章存档

2011年(5)

2010年(21)

2009年(3)

2008年(4)

2007年(28)

我的朋友

分类: BSD

2007-11-13 13:06:21

cscope是*nix下功能强大的开发支持功能, 它极大地方便了对源代码库的浏览, 查询. 比如回答:
(1) 函数foo就调用了哪些函数
(2) 函数foo被哪些函数调用过
(3) 变量v_t 的定义在哪里
等等.

vim中内置的ctags支持提供了类似的功能, 但cscope的功能更为强大. 要了解vim中关于cscope的主题, 可以在vim中用
:h cscope

windows下的gvim预编译版提供了对cscope的支持, 但是默认安装好之后还是不能使用它, 这跟cscope的工作原理有关. 要提供对一个源代码库的cscope支持, 必需先用cscope.exe 来收集这些源代码的信息, 生成一个(默认)cscope.out的符号信息文件. 然后在gvim中用ex命令行:
:cscope add cscope.out
其中的cscope.out是cscope.out库文件名, 可以改为任何你生成的cscope文件名.
如果添加成功, gvim将调用cscope.exe, 这是一个命令行程序, 它的运行会产生一个DOS窗口, 这是cscope.exe原本的面目, 也就是说, 没有vim, 你仍可以在命令上使用cscope功能, gvim为了提供透明的cscope支持, 将这个包容cscope.exe运行的窗口隐藏了起来, 通过管道与这个后台支持的cscope.exe程序进行对话, 最终向用户提供无缝的cscope.exe支持.

安装:
:h cscope-win32
会告诉你有人已经实现了win32下cscope的支持功能, 顺着网站

你可以下载一个win32的cscope, 不过, 它不能用. 运行的时候会说找不到pdcurses.dll中的一个函数, 估计是作者放错了文件. 我email过作者询问这个问题, 一直没有得到答覆.


上有cscope15.4的版本, 抓回来, 可以运行, 它是在win2k的窗口下它会把代码页切换回437去--这是一个DOS下的16位程序, 运行它时win2k必需通过ntvdm.exe给它提供一个虚拟机, 根据我调试gvim的结果来看, 这正是cscope在gvim中不能正常使用的根本原因, win2k对所谓legacy DOS程序支持还毕竟有限.

自编译:
万般无奈, 我只好抓回源代码, 修改, 编译. 它需要的东东有:
pdcurses
regexp
这两个软件包在编译时需要其头文件, 链接时需要其.lib文件, 运行时需要其动态运行库, 必需下载
bison
flex
这两个是在编译前运行, 通过它们生成egrep.c和 fscanner.c这两个源文件. 只要能正确运行就行. 我用的是djgpp里带的, 理论上, 如果有其它平台上的这两个程序, 只要运行一下它们生成必要的egrep.c 和 fscanner.c两个文件, 也行.

通过静态分析它们的Makefile文件, 用VS.NET 生成一个C++项目, 编译.
放到vim的运行目录下,
:cscope add cscope.out

OK!
现在我把这必需的3个文件压缩后放在这些, 应该大家直接解压到VIM的运行目录(即gvim.exe所在的那个目录, 典型的是C:\vim\vim62)下即可.
我的测试环境是
win2k professional chinese version, sp3
vim6.2

阅读(2311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~