大型项目的代码阅读,一般需要借助Source Insight之类的工具,帮助理解代码执行流程。Linux下使用Cscope工具生成符号索引,也可以很方便的阅读代码。U-Boot和Linux kernel一类的大型项目中,其Makefile脚本支持Cscope工具,可自动生成项目相关的符号索引。
1 $ make cscope
Makefile文件内容如下:
# U-Boot 2017-03 Makefile 1 cscope: 2 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \3 cscope.files4 cscope -b -q -k
其作用是搜索编译相关路径,将目录中的'*.c',‘*.h','*.S'文件名记录在'cscope.file'里,并通过Cscope生成符号索引文件。
在实际使用过程中,发现此命令尚有可改进的地方
# U-Boot 2017-03 Makefile 1 cscope:2 $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \3 -maxdepth 1 \4 -regextype posix-extended \5 -regex ".*\.(c|h|s|S|lds)" \6 -print > cscope.files7 cscope -b -q -k
1. 编译相关路径
默认的find命令会搜索给定目录及其子目录,而这些子目录中的文件一般是不需要的。使用'-maxdepth 1'参数,限定搜索本级目录。
2. 文件类型
默认的文件名表达式只支持单字符结尾的文件类型,修改之后可添加'*.lds','*.cpp'等其它类型文件。