系统 : Ubuntu 14.04
1 安装 sudo apt-get install cscope
2 使用
方法一: 在工程目录上 直接 输入 命令 cscope -Rbqk
最后生成 cscope.in.out cscope.out cscope.po.out 三个文件
这样虽然能用但是会导致以下两个问题:
1 ) cscope.out 是根据文件的相对路径生成的 所以会导致只能在 cscope.out 生成的目录下 使用cscope
为了在任意子目录下都可以用 可以使用 -P 参数
2) 默认情况下 cscope 会忽略 .cpp 或者 .java 这类文件,导致在这些文件上无法使用cscope 做一些查找
函数定义或者调用处之类的一些操作
方法二
使用 cscope.files 文件去建立cscope , 在这个 cscope.files 文件加入这些cpp 或这 java 的文件
(包含其路径信息 ) cscope 就会使用cscope.file 去匹配他扫描的文件 ,就不会出现方法一的问题二了,
cscop.files 文件里面记录了文件的路径信息,如果使用绝对路径那么cscope 依据这个文件建立的
cscope.out 文件 也是绝对路径的那么 我们就可以在 工程的任意目录下使用了,解决方法一的问题一
使用find 命令 找出工程下所有需要的使用的文件 再重定向到 cscop.files 即可完成
对应的脚本:
CSCOPE_PATH=/platform_code //需要建立cscop工程的源码目录
CSCOPE_FILES=/cscope_save_dir //保存cscope.files文件的目录
cd /
find $CSCOPE_PATH/ \
-path "./out" -prune -o \
-path "./prebuilts" -prune -o \
-name "*.cpp" -o -name "*.java" -o -name "*.[chsS]" > $CSCOPE_FILES/cscope.files
接着进入 cscope.files 文件所在目录 运行 以下命令即可
cscope -b -q -k
这里不再需要使用 -R 参数 因为 cscope.file记录了所需的所有的目录下的文件了
参考网址:Using Cscope on large projects (example: the Linux kernel)
3 vim 上使用 cscope
使用前要先与cscope.out建立链接 才能使用 cs find 命令去找函数的定义或者调用处等操作
vim 编辑界面 输入 :cs add cscope.out //根据cscope.out文件 所在的位置作修改
接着即可使用 :cs find 命令了
一般直接在 vimrc 进行配置 解决这些繁琐的操作
例如在 vimrc 加入:
if has("cscope")
set csprg=/usr/bin/cscope
set csto=1
set cst
set nocsverb
" add any database in current directory
cs add /cscope/cscope.out #根据cscope.out所在的位置做修改
set csverb
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
参考网址 Vim/Cscope tutorial