代码之家  ›  专栏  ›  技术社区  ›  Aznaveh

如何修复重复的cscope?这是更好的方法吗?

  •  12
  • Aznaveh  · 技术社区  · 8 年前

    我使用vim编程已经有几年了,我使用了CTAG。 我正在使用一个相当大的C/C++包,我需要找到函数的定义。我通常使用grep+CTAG。 最近,我尝试使用cscope而不是CTAG,并将其与Vundle一起安装。 我看到一些文件出现以下错误:

    E568: duplicate cscope database not added
    

    我在网上搜索发现了这个: https://blogs.oracle.com/natarajan/entry/avoiding_duplicate_cscope_database_error 它不起作用。

    我怎样才能解决这个问题?

    3 回复  |  直到 7 年前
        1
  •  14
  •   me_and    7 年前

    扩展 Artem's answer :

    Vim帮助 cscopeverbose 如下:

    如果 'cscopeverbose' 未设置(默认),则不会打印消息 在添加cscope数据库时指示成功或失败。理想情况下,你 应在您的 .vimrc 在添加任何cscope数据库之前, 在添加它们之后,设置它。从那时起,当您添加更多数据库时 在Vim中,如果数据库失败,您将得到一条(希望)有用的消息 待添加。

    这里的问题是:(a)有多个脚本试图加载 cscope.out (b)他们没有遵循最佳实践,在加载文件之前禁用“详细”cscope警告,然后再重新启用,如上面的帮助文本所示。

    完整的错误输出应该告诉您哪个脚本触发了此警告;对我来说,它看起来像这样:

    Error detected while processing /home/me_and/.vim/plugin/cscope_maps.vim:
    line   42:
    E568: duplicate cscope database not added
    

    修复方法是编辑 ~/.vim/plugin/cscope_maps.vim 要添加的文件 set nocscopeverbose 紧接着 cs add ... 线此文件的我的版本已经有 set cscopeverbose 紧接着,但如果你没有,你也应该加上。

        2
  •  7
  •   Artem    8 年前

    找到了适合我的解决方案(此处: http://thoughtsolo.blogspot.com/2014/02/cscope-issue-duplicate-cscope-database.html ):

    只需将这一行“set-nocscopeverbose”添加到~/。vimrc文件。

        3
  •  2
  •   Rishi    8 年前

    根据博客 当VIM已经用“CSCOPE”模块编译,并且您还安装了“CScopeMunu.VIM”时,会弹出此错误 “.我假设您有一个vim可执行文件 configure --enable-cscope 选项

    我是这样做的:

    • 下载cscope源代码并构建它,将可执行文件安装在您的 PATH
    • 下载vim源代码和 配置 --启用cscope ,生成源代码并安装可执行文件
    • 下载 cscope_maps.vim 把它放在下面 $HOME/.vim/plugin 目录这包含vim的cscope设置。
    • 使用源文件和头文件创建cscope数据库。您可以执行以下操作:

    find $PROJECT_HOME -name *.c -o -name "*.cpp" -o -name "*.cc" -o -name "*.h" -o -name "*.hpp" > cscope.files

    cscope -qbR -i cscope.files

    您可以在别名中添加这些命令,并在每次更新cscope数据库时执行别名。这两个命令创建和最终创建 cscope.out 数据库文件。

    • 更新.vimrc文件,使其具有以下内容

      if has("cscope") set csprg=<location to cscope executable> set csto=0 cs add <location to cscope.out> endif

    我希望在完成这些步骤后,您应该能够轻松地将cscope与vim一起使用。

    请注意,如果您正在处理多个项目,您应该能够添加适当的环境变量,以使vim能够选择正确的cscope数据库。

    为了回答你的第二个问题,我可以建议使用 tagbar 。这将在当前源文件或头文件中列出函数名。您可以使用安装它 Vundle .将以下行添加到 .vimrc

    Plugin 'majutsushi/tagbar'

    将其添加到.vimrc以切换标记栏视图

    nmap <F4> :TagbarToggle<CR>

    注意 F4 只是一个示例,您可以使用任何绑定来执行相同的操作。