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命令