如何修复重复的cscope?这是一种更好的方式吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复重复的cscope?这是一种更好的方式吗?相关的知识,希望对你有一定的参考价值。
这几年我用vim编程,我使用了ctags。我正在使用一个相当大的C / C ++包,我需要找到函数的定义。我通常使用grep + ctags。最近我尝试使用cscope而不是ctags并将其与Vundle一起安装。我看到一些文件出现以下错误
E568: duplicate cscope database not added
我在网上搜索并发现:https://blogs.oracle.com/natarajan/entry/avoiding_duplicate_cscope_database_error它不起作用。
我怎样才能解决这个问题?
Vaz对cscopeverbose
的帮助如下:
如果未设置
'cscopeverbose'
(默认值),则不会打印消息,指示添加cscope数据库时成功或失败。理想情况下,您应该在添加任何cscope数据库之前在.vimrc
中重置此选项,并在添加它们之后进行设置。从那时起,当您在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
,但是如果你没有,你也应该添加它。
找到适合我的解决方案(这里:http://thoughtsolo.blogspot.com/2014/02/cscope-issue-duplicate-cscope-database.html):
只需将此行“set nocscopeverbose”添加到〜/ .vimrc文件中即可。
根据博客,“当VIM已经使用'CSCOPE'模块编译并且您还安装了”cscopemenu.vim“时,会弹出此错误。我假设你有一个vim可执行文件已经configure
d与--enable-cscope
选项。
这是我做的:
- 下载cscope源代码并构建它,将可执行文件安装在
PATH
中可用的目录中 - 使用
configure
下载vim源代码和--enable-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
我希望在完成这些步骤之后你应该能够轻松地使用带有vim的cscope。
请注意,如果您正在处理多个项目,则应该能够添加适当的环境变量以使vim能够选择正确的cscope数据库。
要回答你的第二个问题,我建议你使用tagbar。这将在当前源文件或头文件中列出您的函数名称。您可以使用Vundle
安装它。将以下行添加到.vimrc
Plugin 'majutsushi/tagbar'
将其添加到.vimrc以切换标签栏视图
nmap <F4> :TagbarToggle<CR>
请注意,F4
只是一个示例,您可以使用任何绑定来执行相同操作。
以上是关于如何修复重复的cscope?这是一种更好的方式吗?的主要内容,如果未能解决你的问题,请参考以下文章
.NET 设计:冒泡异常以更好地重构实体消费者,这是一种好习惯吗?