我正在运行 Ubuntu 8.04 并运行了以下命令:
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/stdlibcpp /usr/include/c++/4.2.4/
为我的系统上的标准 C++ 库和 STL ( libstdc++ ) 生成一个 ctags 数据库,以便与OmniCppComplete vim 脚本一起使用。这给了我一个非常合理的 4MB 标签文件,它似乎工作得很好。
但是,当我对已安装的 Boost 标头运行相同的命令时:
$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -f ~/.vim/tags/boost /usr/include/boost/
我最终得到了一个 1.4 GB 的标签文件! 我还没有尝试过,但这似乎太大而无用。有没有办法为我安装的 Boost 标头获取更纤薄、更可用的标签文件?
编辑
请注意,libstdc++ 包括 TR1,其中包含 Boost 库。因此,对于 libstdc++ 输出 4 MB 标签文件和 Boost 最终输出 1.4 GB 标签文件,一定有一些奇怪的事情发生。
刚刚在 Boost 邮件列表中遇到了这个:
答案
感谢 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
我已经升级到 Ubuntu 10.04 和 Boost 1.40,这就是我测试这个解决方案的原因,但据我所知,它应该适用于任何 Boost 版本。