# cscope.sh
#!/bin/bash
LNX=$PWD
echo "generate cscope index files..."
cd $LNX
find $LNX \
-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o \
-path "$LNX/arch/arm/mach-*" ! -path "$LNX/arch/arm/mach-pxa*" \
! -path "$LNX/arch/arm/mach-mmp*" \
! -path "$LNX/arch/arm/mach-tegra*" -prune -o \
-path "$LNX/arch/arm/plat-*" ! -path "$LNX/arch/arm/plat-pxa*" -prune -o \
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-arm*" \
! -path "$LNX/include/asm-generic*" -prune -o \
-path "$LNX/tmp*" -prune -o \
-path "$LNX/Documentation*" -prune -o \
-path "$LNX/scripts*" -prune -o \
-path "$LNX/patches*" -prune -o \
-path "$LNX/drivers/*" ! -path "$LNX/drivers/base*" \
! -path "$LNX/drivers/char*" \
! -path "$LNX/drivers/usb*" \
! -path "$LNX/drivers/regulator*" \
! -path "$LNX/drivers/mmc*" \
! -path "$LNX/drivers/i2c*" \
! -path "$LNX/drivers/power*" \
! -path "$LNX/drivers/mspm_dyn*" \
! -path "$LNX/drivers/gpio*" \
! -path "$LNX/drivers/video*" \
! -path "$LNX/drivers/tty*" \
! -path "$LNX/drivers/serial*" \
! -path "$LNX/drivers/rtc*" \
! -path "$LNX/drivers/switch*" \
! -path "$LNX/drivers/cpufreq*" \
! -path "$LNX/drivers/cpuidle*" \
! -path "$LNX/drivers/mfd*" -prune -o \
-name "*.[chxsS]" -print > $LNX/cscope.files
cscope -b -q -k
注释:
find 命令是在当前代码树目录下搜索出目标文件,即将会被编译到的目录及文件,把这些文件及文件名存放到cscope.files文件中。
-path 要搜索的目录名字符串。
! 表示取反。
-prune 表示目录集合取反。
-o 表示“or”与的意思,还有 -a 表示“and”或的意思。
-name 表示搜索的文件类型,可用正则表达式过滤。
-path "$LNX/arch/*" ! -path "$LNX/arch/arm*" -prune -o
这一句没有括号,运算规则从前往后。-path "$LNX/arch/*"表示取出"$LNX/arch/*"集合;
! -path "$LNX/arch/arm*" 在前面的集合中去除"$LNX/arch/arm*" 后剩下的集合; -prune 把前面以所有集合取反,即只剩下"$LNX/arch/arm*" ;然后-o,与上后面类似的集合单元。
补充:
find还可以使用括号运算符,但是前面要加转义"\"
在dir0、dir1及子目录下查找txt后缀文件
find ./ \( -path './dir0*' -o -path './dir1*' \) -a -name *.txt -print
cscope:
cscope -b -q -k
一般应加上-i cscope.files,但是cscope会默认在cscope.files中的目录中建立索引所以这句可以省略。
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。
在源码根目录下打开任意.c文件,使用如下命令:
阅读(987) | 评论(0) | 转发(0) |