折腾我好久了, 记录下;
Winxp , Emacs22.1
cscope的主页:http://cscope.sourceforge.net/
下载之后里面有个 xcscope目录, 拷贝到 emacs/site-lisp
在~/_emacs里面添加
(require 'xcscope)
win32版本下载地址:http://iamphet.nm.ru/cscope/index.html ,压缩包中有两个编译好的exe文件:cscope.exe, sort.exe , 下载完毕后放到emacs/bin目录下 ;
indows无法使用其直接生成cscope.files文件:
可以安装个cygwin , 然后到代码目录下, #find . -name "*.*" -print >cscope.files
另外网上有人的做法,(没测试):
用perl来实现,下面是源码:
use File::Find;
use Cwd;
open CSCOPE_FILES,">cscope.files";
find(/&handleFind,getcwd);
sub handleFind{
my $foundFile = $File::Find::name;
if ($foundFile =~ //.h$/i ||
$foundFile =~ //.hpp$/i ||
$foundFile =~ //.c$/i ||
$foundFile =~ //.cpp$/i){
print CSCOPE_FILES"$foundFile/n";
}
}
其实实现没什么关系, 生成之后的cscope.files 只是个文件列表 ...
在使用之前,cscope也需要对代码进行索引。在emacs中可以这样做:
C-s s I 对目录中的相关文件建立列表并进行索引
建完索引之后,你就可以用cscope在代码里游荡了。常用的一些命令如下:
C-c s g 寻找全局的定义
C-c s c 看看指定函数被哪些函数所调用
C-c s C 看看指定函数调用了哪些函数
C-c s e 寻找正则表达式
C-c s f 寻找文件
C-c s i 看看指定的文件被哪些文件include