在linux下面總不能得心應手地查看代碼,知識好多工具我們不知道怎麼去用而已。下面總結一下本人的vim+cscope+ctags環境搭建:
1.vim
(1) 查看vim是否支援cscope
#vim --version |grep cscope
+cryptv +cscope +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic
如果沒有 +cscope ,那麼請重新編譯vim;否則跳到(3)
(2)編譯vim,我用的源碼是vim72
#vim vim72/src/Makefile 把
#CONF_OPT_CSCOPE = --enable-cscope
改成
CONF_OPT_CSCOPE = --enable-cscope
編譯安裝的時候用linux的三部曲:
#./configure
#make
#make install
#vim --version |grep cscope
+cryptv +cscope +cursorshape +dialog_con_gui +diff +digraphs +dnd -ebcdic
(3)安裝cscope和ctags
a. http://cscope.sourceforge.net/ (cscope源碼下載)
b. http://ctags.sourceforge.net/ (ctags源碼下載)
利用linux的安裝三部曲安裝
(4)對.vimrc檔案的修改
a.http://cscope.sourceforge.net/ 這裡有個cscope_map.vim檔案,把裡面的if has("cscope") 到 endif
複製到.vimrc裡面來。 這樣做主要是利用快速鍵來代替 “cscope find c ***”等命令,很好用的。
b.在.vimrc中添加 set tags=./tags, tags, /usr/include/tags
(5)應用,理論不多說,僅僅舉個例子:
在你源碼的目錄下面
#find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files (添加本目錄和子目錄的源檔案)
#find ../common "*.h" -o -name "*.c" -o -name "*.cc" >> cscope.files (添加其他目錄的檔案)
#cscope -bkq -i cscope.files
#ctags -R
說明一下:
這個命令會產生三個檔案:cscope.out, cscope.in.out, cscope.po.out。
其中cscope.out是基本的符號索引,後兩個檔案是使用"-q"選項產生的,可以加快cscope的索引速度。
這個指令碼,首先使用find命令,尋找目前的目錄及子目錄中所有尾碼名為".h", ".c"和".c"的檔案,並把尋找結果重新導向到檔案cscope.files中。
然後cscope根據cscope.files中的所有檔案,產生符號索引檔案。
最後一條命令使用ctags命令,產生一個tags檔案,在vim中執行":help tags"命令查詢它的用法。它可以和cscope一起使用。
上面所用到的命令參數,含義如下:
-R: 在產生索引檔案時,搜尋子目錄樹中的代碼
-b: 只產生索引檔案,不進入cscope的介面
-q: 產生cscope.in.out和cscope.po.out檔案,加快cscope的索引速度
-k: 在產生索引檔案時,不搜尋/usr/include目錄
-i: 如果儲存檔案清單的檔案名稱不是cscope.files時,需要加此選項告訴cscope到哪兒去找源檔案清單。可以使用“-”,表示由標準輸入獲得檔案清單。
-I dir: 在-I選項指出的目錄中尋找標頭檔
-u: 掃描所有檔案,重建交叉索引檔案
-C: 在搜尋時忽略大小寫
-P path: 在以相對路徑表示的檔案前加上的path,這樣,你不用切換到你資料庫檔案所在的目錄也可以使用它了。
接著:
#vim qljt.c 開啟檔案,然後執行vi命令
:cscope add cscope.out
大功告成,測試:
用 “Ctrl+]” 跳到函數的定義地方,用“Ctrl+/ 然後按c”跳到函數被調用的地方