gpt4 book ai didi

c++ - 我如何在 ubuntu C/C++ 中生成带有 exuberant ctags 的标签文件,包括与 vim 一起使用的目录?

转载 作者:太空狗 更新时间:2023-10-29 12:32:47 27 4
gpt4 key购买 nike

我在 Windows 7 中使用 GVim 7.4 和 TDM-GCC 64。我知道这个编译器的包含目录,并将路径添加到 gvim 的标签搜索路径中。在 Windows 中一切正常。

但我是 ubuntu 的新手,我目前安装的是 ubuntu 13.10 (Saucy),但对编译器的包含目录有点困惑。

我发现其中一些目录是:

/usr/include
/usr/src
/usr/local/include
/usr/include
/usr/lib/gcc/i686-linux-gnu/4.8
/usr/lib/gcc/x86_64-linux-gnu/4.8/include

最后我创建了一个shell脚本如下:

#!/bin/sh
cd /usr/include
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
cd /usr/src
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
cd /usr/local/include
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
cd /usr/include
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
cd /usr/lib/gcc/i686-linux-gnu/4.8
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *
cd /usr/lib/gcc/x86_64-linux-gnu/4.8/include
sudo ctags -R --c-kinds=+pxfvtcdeglmnsu --c++-kinds=+pxfvtcdeglmnsu --languages=C,C++ --langmap=C:.c.h --langmap=C++:.C.h.c.cpp.hpp.c++.cc.cp.cxx.h++.hh.hp.hxx --fields=+iaSm --extra=+qf -f tags *

但是这个脚本正在生成一个巨大的标签文件,因此 vim 在搜索函数、变量、结构、原型(prototype)等当我按下“< C-X > < C-O >”或 Tab 时(我将 omni-completion 配置为 Tab),vim 卡住了一会儿,然后提示我正在寻找的内容。

最后我决定放弃递归 (-R) 选项,但我的问题是:

1) ubuntu 中的实际包含目录是什么?

2) 我应该在什么地方使用递归,什么地方不应该使用?

3)很多目录一般用不到,比如'/usr/src/'或'/usr/src/nvidia-331.38'其中主要包含 Linux 头文件和 NVIDIA 驱动程序功能。这些目录类型是什么,以便我可以将其作为最后一个选项列在我的 .vimrc 中?

我正在寻找一种解决方案来查找所有内容(函数、变量、结构),而不必降低 vim 的速度。

提前致谢。

最佳答案

我会建议/usr/include 和/usr/local/include 递归地作为 header 的最基本路径。

在大多数类 Unix 系统(包括 Linux 和 FreeBSD 发行版)上,/usr/include 是查找 C 和 C++ 库头文件的最基本位置。

通常,但并非总是如此,系统管理员会在/usr/local 中安装额外的软件,这通常(但不总是)意味着添加的库将位于/usr/local/lib 中,而它们的 C/C++ 头文件将位于/usr/local/include.

在一些类 Unix 系统上,可选软件安装在/opt 而不是/usr/local。

通常在开源类 Unix 系统上,/usr/src 将包含操作系统的源代码和 header ,包括内核和“用户空间”(即用户可能从命令行使用的命令)。通常,除非您开发的应用程序应该与操作系统紧密集成或者实际上是操作系统的一部分,否则您将不需要/usr/src 路径中的 header (但不在/usr/include 中) ).

关于c++ - 我如何在 ubuntu C/C++ 中生成带有 exuberant ctags 的标签文件,包括与 vim 一起使用的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996446/

27 4 0