为C/C++标准库、boost和第三方库设置单独的ctags数据库

4

我想为/usr/include/中的各种库设置单独的ctags数据库,以便与OmniCppComplete一起使用。

这样做的目的是能够仅拉取目标语言(C或C++)中特定项目所需的库。

例如,我想为标准C库、可能被C或C++程序使用的系统库(如sockets / networking)以及标准C++库/STL/Boost分别建立一个数据库,然后为QT或glib等各种第三方库建立其他数据库。然后,我可以通过在vim中键入set tags+=~/.vim/somelib.tags来轻松地拉取它们。

我假设与C++ stdlib和STL相关的所有内容都在/usr/include/c++中,并且Boost都在/usr/include/boost中。不幸的是,标准C库和系统库似乎直接倒入了/usr/include/中,其中还有各种其他内容。

如何获取哪些文件和目录属于哪些库的列表?我正在使用Ubuntu 8.04。


有趣的问题,但如果最终你想知道如何区分标题,那么标题可能会误导。 - UncleZeiv
知道哪些目录属于哪些库很重要吗? - johnsyweb
@Johnsyweb:是的,主要是哪些文件和子目录属于标准C库,哪些属于像网络这样的系统库。 - Robert S. Barnes
这很有道理。如果我再读一遍标题,就不用问了 :-) - johnsyweb
1个回答

1

apt-file 是 Ubuntu 上的一个好帮手。

以下命令将为你列出所有 Boost 的包含文件:

apt-file list -x "^libboost" | grep '/include/' | cut -f2 -d:

我会把剩下的部分留给读者自己练习!

更新:为了完整起见,如果您以前从未使用过apt-file,请调用apt-file update


很奇怪。使用apt安装了Boost吗?如果尝试apt-file list -vx '^libstdc++',会得到什么? - johnsyweb
@Johnsyweb:我使用了sudo apt-get install libboost-*来安装boost。你刚才给我的命令输出了一个deb存储库列表。 - Robert S. Barnes
我希望在详细 [-v] 输出的开头能看到大量 deb 仓库,然后我期望看到所有作为 libstdc++6-4.4-doc 安装的文件列表。很抱歉我不知道为什么这对您不起作用。我已在多台 Ubuntu 10.04 上进行了测试。 - johnsyweb
@Johnsyweb:这是那种让你拍自己的额头的时刻。我第一次在系统上运行apt-file。阅读了一些文档后,我意识到在进行任何搜索之前必须运行sudo apt-file update。现在它可以正常工作了。 - Robert S. Barnes
1
@Johnsyweb:再微调一下 - cut 命令在输出的每一行开头加了一个空格,导致 ctags 报错。去掉 cut 命令并改用下面这个命令代替:apt-file list libc6-dev | grep -o '/usr/include/.*h' > ~/.vim/tags/libc6-filelist - Robert S. Barnes
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接