生成cscope.out的bash脚本
2013-08-05 22:05
162 查看
生成cscope.out的bash脚本,接收两个参数,第一个是源文件路径,第二个是存放cscope.out文件的目录名。
修改和make_find_arg()里面的FILETYPES和FILENAMES数组,就可以修改和增删cscope需要解析的文件。
功能虽然实现了,但是看上去有些丑,重构之:
在脚本验证过程中,貌似发现cscope两个限制:
1、文件名长度限制:最长只支持250个字符。
2、重复文件名的文件解析会失败。
修改和make_find_arg()里面的FILETYPES和FILENAMES数组,就可以修改和增删cscope需要解析的文件。
######################################################################### # File Name: makescope.sh # Author: tintinr # mail: tintinr@gmail.com # Created Time: 日 8/ 4 10:51:38 2013 ######################################################################### #!/bin/bash make_find_arg() { # 文件类型,如*.c FILETYPES=("c" "cc" "cpp" "h" "mk" 'sh' "java" "S") # 文件名,如Makefile FILENAMES=("Makefile" "makefile") for each_file_type in ${FILETYPES[@]} do if [ -n "$find_arg" ] then single_find_arg=" -o " else single_find_arg="" fi single_find_arg+="-name \"*." single_find_arg+=$each_file_type single_find_arg+="\" " find_arg+=$single_find_arg done for each_file in ${FILENAMES[@]} do single_find_arg=" -o -name \"" single_find_arg+=$each_file single_find_arg+="\" " find_arg+=$single_find_arg done } usage() { echo "Usage: makescope src_path project_name" echo "==src_path: source root path" echo "==project_name: cscope db will be stored in ~/cscope/project_name/ dir" } if [ $# -ne 2 ] then usage return -1 fi src_path=$1 project_path=~/cscope/$2 current_dir=$(PWD) mkdir -p $project_path cd $project_path find_arg="" make_find_arg echo "find" $src_path " " $find_arg find_str="find " find_str+=$src_path find_str+=" " find_str+=$find_arg eval $find_str > cscope.files cscope -bkq -i cscope.files cd $current_dir
功能虽然实现了,但是看上去有些丑,重构之:
######################################################################### # File Name: makescope.sh # Author: tintinr # mail: tintinr@gmail.com # Created Time: 日 8/ 4 10:51:38 2013 ######################################################################### #!/bin/bash make_find_name_arg() { file_prefix=$1 declare -a file_types=("${!2}") for each_file in ${file_types[@]} do if [ -n "$find_arg" ] then single_find_arg="-o " else single_find_arg="" fi single_find_arg+="-name \"" single_find_arg+=$file_prefix single_find_arg+=$each_file single_find_arg+="\" " find_arg+=$single_find_arg done } make_find_arg() { # 文件类型,如*.c local FILETYPES=("c" "cc" "cpp" "h" "mk" 'sh' "java" "S") # 文件名,如Makefile local FILENAMES=("Makefile" "makefile") make_find_name_arg "*." FILETYPES[@] make_find_name_arg "" FILENAMES[@] } build_ecsope_file() { find_arg="" make_find_arg #echo "find" $src_path " " $find_arg find_str="find " find_str+=$src_path find_str+=" " find_str+=$find_arg eval $find_str > cscope.files } usage() { echo "Usage: makescope src_path project_name" echo "==src_path: source root path" echo "==project_name: cscope db will be stored in ~/cscope/project_name/ dir" } main() { current_dir=$(PWD) mkdir -p $project_path cd $project_path build_ecsope_file cscope -bkq -i cscope.files cd $current_dir } if [ $# -ne 2 ] then usage return -1 fi src_path=$1 project_path=~/cscope/$2 main
在脚本验证过程中,貌似发现cscope两个限制:
1、文件名长度限制:最长只支持250个字符。
2、重复文件名的文件解析会失败。
相关文章推荐
- 简单脚本生成cscope.out和LookupFile所用tag文件
- 公布生成cscope.out, cscope.files, tags的脚本文件
- cscope数据库生成脚本
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”(已解决)
- Bash:如何不用写脚本的情况下建立一个目录,然后在其中生成一组有规律的文件.
- BASH脚本差异生成升级热更新包
- Bash脚本:生成代码csope和ctags信息
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”(已解决)
- sqlserver,执行生成脚本时“引发类型为“System.OutOfMemoryException”的异常”
- [python]生成cscope符号索引文件的脚本
- BASH脚本(ok2makefile):生成带有makefile的C++ "Hello world"程序
- bash脚本2
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- 使用postgreSQL DataSync 进行pg数据库升级 数据同步 升级脚本生成, postgreSQL DataSync简单教程
- lua脚本实现自动生成APK包
- Bash 脚本中如何使用 here 文档将数据写入文件
- ubuntu下source、sh、bash、./执行脚本的区别
- 用bash脚本进行代码行数统计
- sql2008生成数据库脚本到sql2005
- 对于写bash脚本的朋友,read命令是不可或缺的,需要实践一下就可以了解read命令的大致用途: 编写一个脚本: #!/bin/bash # hao32 test read echo -e "Pl