vim + cscope
#!/bin/sh find . -name "*.h" -o -name "*.c" -o -name "*.cc" > cscope.files cscope -bkq -i cscope.files ctags -R
cscope生成三個索引文件cscope.out, cscope.in.out, cscope.po.out
add : Add a new database (Usage: add file|dir pre-path )
:cscope add cscope.out
在 vim 中可以使用命令縮寫
:cs a cscope.out
http://graceco.de/manual/cscope_vim_tutorial_zh.html
查找命令
:cs find s ---- 查找C語言符號,即查找函數名、宏、枚舉值等出現的地方 :cs find g ---- 查找函數、宏、枚舉等定義的位置,類似ctags所提供的功能 :cs find d ---- 查找本函數調用的函數 :cs find c ---- 查找調用本函數的函數 :cs find t: ---- 查找指定的字符串 :cs find e ---- 查找egrep模式,相當於egrep功能,但查找速度快多了 :cs find f ---- 查找並打開文件,類似vim的find功能 :cs find i ---- 查找include
Vim 的多窗口功能:移動使用 'CTRL-W w'(或者使用 'CTRL-W' 加方向鍵,或者 CTRL-W h/j/k/l 對應 左/上/下/右),關閉窗口使用 'CTRL-W c'(或者使用辦法 ':q'),僅僅使用當前窗口使用 'CTRL-W o',分割兩個同樣的窗口使用 'CTRL-W s'(或者使用 'CTRL-W v' 垂直分割),在一個新窗口打開文件爲 ':spl[it] 文件名']
- C+/ s Vim 底部彈出一個窗口
- C+space s 搜索的結果將出現在 Vim 新分割的水平窗口中
makefile
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=408225
1)如果這個工程沒有編譯過,那麼我們的所有C文件都要編譯並被鏈接。
2)如果這個工程的某幾個C文件被修改,那麼我們只編譯被修改的C文件,並鏈接目標程序。
3)如果這個工程的頭文件被改變了,那麼我們需要編譯引用了這幾個頭文件的C文件,並鏈接目標程序。
target ... : prerequisites ...
command
...
...
target也就是一個目標文件,可以是Object File,也可以是執行文件。還可以是一個標籤(Label),對於標籤這種特性,在後續的“僞目標”章節中會有敘述。
prerequisites就是,要生成那個target所需要的文件或是目標。
command也就是make需要執行的命令。(任意的Shell命令)
make會比較targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的話,那麼,make就會執行後續定義的命令。
pkg-config
pkg-config提供了下面幾個功能:
- 檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會打印出錯誤信息,避免鏈接錯誤版本的庫文件。
- 獲得編譯預處理參數,如宏定義,頭文件的位置。
- 獲得鏈接參數,如庫及依賴的其它庫的位置,文件名及其它一些連接參數。
- 自動加入所依賴的其它庫的設置。
爲了讓pkg-config可以得到這些信息,要求庫的提供者,提供一個.pc文件。比如gtk+-2.0的pc文件內容如下:
prefix=/usr exec_prefix=/usr libdir=/usr/lib includedir=/usr/include target=x11 gtk_binary_version=2.4.0 gtk_host=i386-redhat-linux-gnu Name: GTK+ Description: GIMP Tool Kit (${target} target) Version: 2.6.7 Requires: gdk-${target}-2.0 atk Libs: -L${libdir} -lgtk-${target}-2.0 Cflags: -I${includedir}/gtk-2.0
$ gcc sample.c -o sample `pkg-config –cflags –libs glib-2.0`
vim命令