为Boost生成合理的ctags数据库

Rob*_*nes 21 c++ linux vim boost ctags

我正在运行Ubuntu 8.04并运行命令:

$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp /usr/include/c++/4.2.4/
Run Code Online (Sandbox Code Playgroud)

在我的系统上为标准C++库和STL(libstdc ++)生成一个ctags数据库,以便与OmniCppComplete vim脚本一起使用.这给了我一个非常合理的4MB标签文件,似乎运行得相当好.

但是,当我对安装的Boost标头运行相同的命令时:

$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost /usr/include/boost/
Run Code Online (Sandbox Code Playgroud)

我最终得到了一个1.4 GB的标签文件! 我还没有尝试过,但看起来它似乎太大而无法使用.有没有办法为我安装的Boost标头获得更纤薄,更实用的标签文件?

编辑

正如笔记一样,libstdc ++包含TR1,其中包含了许多Boost库.因此,libstdc ++必须有一些奇怪的东西才能出现4 MB的标签文件和Boost最终得到1.4 GB的标签文件.

刚刚在Boost邮件列表上遇到过这个问题:

Boost-users Boost和autocompletion

答案

感谢Neg_EV弄清问题是什么,但是解决问题的方法比他建议的要好得多:

确保apt-file已安装,并运行以下命令

(我将我的库标签保存在〜/ .vim/tags /中):

$ sudo apt-file update
$ apt-file list boost | grep -E -o '/usr/include/.*\.(h|hpp)' | grep -v '/usr/include/boost/typeof/' > ~/.vim/tags/boost-filelist
$ ctags --sort=foldcase --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost -L ~/.vim/tags/boost-filelist
Run Code Online (Sandbox Code Playgroud)

我已经升级到Ubuntu 10.04和Boost 1.40,这就是我测试这个解决方案,但据我所知,它应该适用于任何Boost版本.

Neg*_*_EV 10

我知道这篇文章有点旧,但我遇到了同样的问题.我进一步调查了一下,似乎是boost中的一个文件夹引起了问题:typeof.我使用的是boost 1.37,我的标签文件是1.5G,typeof是1.4G.所以我刚刚创建了一个没有包含该目录的标签文件,结果大小为70M.我甚至能够在没有空间耗尽的情况下对它进行排序:)我想在更新版本的boost中它们可能是其他太大的项目但是我发现的一般解决方案是这个......

  1. 单独为每个boost文件夹生成一个标记文件,一个简单的bash for循环应该能够做到这一点.
  2. 看看哪些太大了.
  3. 创建一个新的单个标签文件,不包括那些大型目录,或者保持标签文件分开,只需删除过大的标签文件.

这是我使用的脚本(取自评论):

for i in $(find -maxdepth 1 -type d | grep -v '^\.$' | sed 's/\.\///' ); do
    echo $i;
    ctags -f ~/tmp_tags/$i.tags -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ --sort=foldcase $i;
done
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Vic*_*cky 8

使用该选项

--sort=foldcase
Run Code Online (Sandbox Code Playgroud)

通过这种方式,标签的搜索变得更快.

引用ctags手册页:"foldcase值指定不区分大小写(或大小写折叠)排序.快速二进制搜索使用大小写折叠排序的标记文件需要使用标记文件的工具提供特殊支持,例如在ctags readtags库,或Vim 6.2或更高版本(使用"set ignorecase").此选项必须出现在第一个文件名之前"

  • 我不确定尺寸,但我在VIM中的标签搜索速度增加了至少5倍. (2认同)