emacs配置--gtags为内核生成索引文件

5300阅读 0评论2013-06-24 enzo26
分类:嵌入式

以下脚本是根据cscope为内核生成索引文件方法
不为drivers生成索引是该文件夹内容太多,以后可根据自己需求添加


  1. #!/bin/bash
  2. KERNEL=$PWD
  3. echo "kernel dir: $KERNEL"
  4. # find 用法
  5. # 只查找某个目录
  6. # find . -p
  7. # 想要忽略一个完整的目录树,应当使用-prune 而不是检查目录树中所有的文件。例如:要跳过
  8. # 'src/emacs' 目录和其中所有的文件和子目录,把其他找到的文件打印出来,应当这样:
  9. # find . -path './src/emacs' -prune -o -print
  10. # -o : 逻辑或简写 expr1 -or expr2
  11. # !expr: 逻辑非 -not expr
  12. # generate the cscope.files
  13. # 添加arch/arm文件夹,根据自己的cpu架构修改
  14. # 排除/scripts, /drivers, /Documentation, /tmp

  15. # 注意net/* 和直接net*写法
  16. find "$KERNEL" \
  17.     -path "$KERNEL/arch/*" ! -path "$KERNEL/arch/arm*" -prune -o \
  18.     -path "$KERNEL/arch/arm/mach-*" ! -path "$KERNEL/arch/arm/mach-at91*" \
  19.     ! -path "$KERNEL/arch/arm/mach-s3c2440*" -prune -o \
  20.     -path "$KERNEL/arch/arm/plat-*" ! -path "$KERNEL/arch/arm/plat-s3c24xx*" -prune -o\
  21.     -path "$KERNEL/tmp*" -prune -o \
  22.     -path "$KERNEL/Documentation*" -prune -o \
  23.     -path "$KERNEL/scripts*" -prune -o \
  24.     -path "$KERNEL/drivers/*" ! -path "$KERNEL/drivers/tty*" -prune -o \
  25.     -path "$KERNEL/sound*" -prune -o \
  26.     -path "$KERNEL/crypto*" -prune -o \
  27.     -path "$KERNEL/tools*" -prune -o \
  28.     -path "$KERNEL/fs*" -prune -o \
  29.     -path "$KERNEL/net*" -prune -o \
  30.     -path "$KERNEL/security*" -prune -o \
  31.     -path "$KERNEL/samples*" -prune -o \
  32.     -name "*.[chxsS]" -print > $KERNEL/gtags.files

  33. echo "Generated gtags.file."
  34. # cscope -bkq -i $KERNEL/cscope.files
  35. gtags -f $KERNEL/gtags.files
  36. #generate the cppcomplete
  37. # ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L $KERNEL/cscope.files
  38. #Try setting the $CSCOPE_DB environment variable to point to a Cscope database you create, so you won


执行该脚本后内核目录会生成一下文件:
GPATH  GRTAGS  GSYMS  GTAGS
然后emacs就可以通过xgtag很简单在函数间跳转,也可以完成自动补全功能



上一篇:emacs配置之ack
下一篇:at91的DM9161插拔网线后不自动识别问题解决方法