2014-02-24 48 views
2

我在Windows 7中使用GVim 7.4和TDM-GCC 64. 我知道這個編譯器的包含目錄, ,並將路徑添加到gvim的標籤搜索路徑中。 在Windows中一切都很好。如何在ubuntu的C/C++包含使用gvim的目錄中生成帶有繁瑣ctags的標籤文件?

但我是ubuntu的新手,我目前安裝了ubuntu 13.10(Saucy), ,但對編譯器的include目錄有些困惑。

我發現了一些這些目錄是:

/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是當搜索功能,變量,結構, 原型等時變慢。 當我按「< CX> < CO>」或Tab(我配置了omni-com pleal to Tab), vim正在凍結一段時間,然後提示我正在尋找的內容。

最後,我決定放棄遞歸(-R)選項,但我的問題是:

1)什麼是實際包含在Ubuntu目錄?

2)我應該在哪裏使用遞歸,哪裏不是? 3)許多目錄通常不需要,比如'/ usr/src /'或'/usr/src/nvidia-331.38' ,它們大多包含Linux頭文件和NVIDIA驅動程序函數。 什麼是這些類型的目錄,以便我可以將它列出在我的.vimrc中作爲最後一個選項?

我正在尋找一個解決方案,以找到一切(函數,變量,結構),而不必減慢vim。

在此先感謝。

+0

我認爲「一切」和「放慢」是同一結果的一部分;也就是說,如果不放慢Vim,就不能擁有一切。所以我認爲你需要定義一些你將要使用的庫,並且只爲這些庫的頭文件生成標籤。 – CXJ

+0

那麼請給我建議標準C/C++頭文件的最基本要求。目前這對我來說已經足夠了。 –

回答

1

我建議/ usr/include和/ usr/local/include遞歸地作爲標題的最基本路徑。

在大多數類Unix系統(包括Linux和FreeBSD發行版)中,/ usr/include是查找C和C++庫標頭的最基本的地方。系統管理員通常會在/ usr/local中安裝其他軟件,通常(但並非總是)意味着添加的庫將位於/ usr/local/lib中,並且它們的C/C++頭文件將會是在/ usr/local/include中。

在某些類Unix系統上,可選軟件安裝在/ opt而不是/ usr/local中。

通常在開放源代碼的類Unix系統中,/ usr/src將包含操作系統的源代碼和頭文件,包括內核和「user land」(即用戶可能從命令行使用的命令)。通常,除非您正在開發應與操作系統緊密集成或實際上是操作系統的一部分的應用程序,否則不需要位於/ usr/src路徑中的標頭(但不在/ usr/include中)。

+0

/usr/local/include在我的情況下是空的。單獨在/ usr/include文件夾中的標記是47.65 MB,但我認爲它正常。謝謝。 –

+0

C++特定標頭通常位於/ usr/include下的子目錄中,而/ usr/include和其他子目錄包含C接口標頭。由於C++經常使用C庫,所以最好擁有可用的庫。 但是,您可能需要查看/ usr/include下是否存在多個C++頭文件,並找到避免標記所有這些頭文件的方法。 也許您的系統在/ usr/include下還有其他添加的庫標頭。我只標記了我的整個/ usr/include,大約是10 MB。 – CXJ

+0

當我通過Ubuntu軟件中心安裝它們時,能否告訴我GNU科學庫,BOOST,PDCurses,yxml11,tiny-xml,zlib,glut等庫頭文件在哪裏? –

相關問題