当我使用
我编写了下面的bash脚本:
make cscope
来生成Linux内核cscope数据库时,我会得到一个数据库文件以及一列相对路径的文件列表。这对我来说是一个问题,因为后来当我从与内核不同的目录中附加外部内核数据库到vim编辑器中时,我可以轻松搜索特定的符号,但我无法打开包含该符号的文件。我编写了下面的bash脚本:
#!/bin/bash
SNAME="$0"
SNAME=${SNAME##*/}
function usage()
{
echo Generate Linux kernel cscope database
echo "Usage: $SNAME [PATH]"
echo -n "You must provide this script with an ABSOLUTE path of your "
echo "kernel's root directory"
}
if [[ -z "$1" ]]; then
usage
exit -1
fi
KDIR="$1"
echo -n "Collecting a list of files... "
if find "$KDIR" -path "${KDIR}/arch/*" ! -path "${KDIR}/arch/x86*" -prune -o \
-path "${KDIR}/include/asm-*" \
! -path "${KDIR}/include/asm-generic*" \
! -path "${KDIR}/include/asm-x86*" -prune -o \
-path "${KDIR}/tmp*" -prune -o \
-path "${KDIR}/Documentation*" -prune -o \
-path "${KDIR}/scripts*" -prune -o \
-name "*.[chxsS]" -print > cscope.files; then
echo done
else
echo failed
fi
echo -n "Building cscope database... "
cscope -k -qb && echo done || echo failed
我创建了一个收集我需要的所有文件(x86 / x86_64架构)的目录,使用绝对路径,并且成功地手动构建了cscope数据库。但是我认为一定有更简单的方法来完成这个任务。也许有一些Makefile的目标,例如make cscope_abs
或make cscope_ext
,但我尚未找到。
有什么建议吗?