项目中 搭建 cscope 使用环境

本文介绍如何在大型项目中有效使用Cscope进行代码查找,包括通过配置cscope.files来解决路径依赖问题,以及在Vim中配置Cscope快捷键实现快速查找函数定义和调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系统 : 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿-源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值