mac cscope的安装

mac cscope的安装

ctags安装好后,安装cscope。

下载cscope最新版本

http://cscope.sourceforge.net/#downloads

解压缩

tar jxvf cscope-15.7a.tar.bz2

安装

./configure && make all && sudo make install
make时报错:

./global.h:395:5: error: conflicting types for 'getline'
int     getline(char s[], unsigned size, int firstchar, BOOL iscaseless);
        ^
/usr/include/stdio.h:442:9: note: previous declaration is here
ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restri...

getline函数命名冲突,这就需要查找所有有getline函数名的文件,并替换成其他名字。
grep patten file_name
-r 是递归查找,意思是当前目录下的子目录中的文件也要查找
-n 是显示行号
-i 忽略大小写
-l 列出匹配的文件名
-L 列出不匹配的文件名
因为还需要替换,用sed
:%s/old/new/g %表示全部行,g表示每行全部匹配点。
改过函数名称发现还是不行,可能有多个地方都需要修改,都改了。
于是换了cscope的新版本,cscope15.8b版本,编译安装直接OK。

补充:
后在suse上安装cscope15.8b版本,make时报错build.c:52:20: error: curses.h: No such file or directory,查了一下,
$zypper install ncurses-devel ncurses
解决,没想到zypper能安装。

cscope使用

安装就是为了使用。
cscope -Rbq生成3个文件。
-R: 在生成索引文件时,搜索子目录树中的代码;
-b: 只生成索引文件,不进入cscope的界面;
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度。
在~/.vimrc文件中配置cscope如何使用,在网上找了一些配置的方法,
配置如下:

if has("cscope")
    set csprg=/usr/local/bin/cscope
    set csto=0
    set cst
    set nocsverb
    " add any database in current directory
    if filereadable("cscope.out")
        cs add cscope.out
    elseif $CSCOPE_DB != ""
        cs add $CSCOPE_DB
    endif
    set csverb
endif

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>

第二行set csprg有错,开始我以为是安装cscope所在的目录,发现报错no cscope connections,cscope是目录,其实是设置cscope的可执行文件,一般在/usr/local/bin/cscope,因为后面有cs add cscope.out用的就是刚设置的cscope添加的。
设置OK后,cscope的快捷键的使用,nmap不用管,<>尖括号中的内容是快捷键,光标停在要查找的字符串,如同时按Ctrol、@、t,等于执行:cs find t。
:cs find s —- 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
:cs find g —- 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
:cs find d —- 查找本函数调用的函数
:cs find c —- 查找调用本函数的函数
:cs find t: —- 查找指定的字符串
:cs find e —- 查找egrep模式,相当于egrep功能,但查找速度快多了
:cs find f —- 查找并打开文件,类似vim的find功能
:cs find i —- 查找包含本文件的文

你可能感兴趣的:(linux)