Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83511
  • 博文数量: 44
  • 博客积分: 286
  • 博客等级: 二等列兵
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-23 11:02
文章分类
文章存档

2013年(2)

2012年(42)

我的朋友

分类: LINUX

2012-12-03 20:52:34

# 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) |
给主人留下些什么吧!~~