当我通过发出make cscope来生成Linux数据库时,我会得到数据库文件以及带有相对路径的文件列表。这对我来说是个问题,因为稍后当我将外部内核的数据库附加到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体系结构),然后我成功地手工构建了数据库。但我认为这肯定是更容易实现这一点的方法。也许是一些Makefile的目标,如make cscope_abs或make cscope_ext,我还没有找到。
有什么建议吗?
发布于 2014-05-17 08:55:32
来自cscope手册这里
-P path Prepend路径到预构建的交叉引用文件中的相对文件名,因此您不必更改到生成交叉引用文件的目录。此选项仅对-d选项有效。
因此,我认为来自顶层内核目录的以下命令应该可以完成这个任务(对不起,这里没有linux机器可用):
cscope -d -P `pwd`我的2美分,
发布于 2015-04-13 11:42:46
首先,创建特定于特定体系结构的cscope数据库比较简单,如下所示:在Linux内核的顶部文件夹中运行
ARCH=x86 make cscope这将创建具有相对路径的cscope。现在,您可以要求vim以两种方式之一解释相对于cscope.out文件位置的路径:
方法1 :使用cscoperelative。:help csre的输出:
If 'cscoperelative' is set, then in absence of a prefix given to cscope
(prefix is the argument of -P option of cscope), basename of cscope.out
location (usually the project root directory) will be used as the prefix
to construct an absolute path. The default is off. Note: This option is
only effective when cscope (cscopeprg) is initialized without a prefix
path (-P). Examples: >
:set csre
:set nocsreWay 2 : (来自Aaron在这问题中的回答)在vim中添加cscope数据库时,指定基本位置。示例:
:cs add <base_location>/cscope.out <base_location>/在vim的cscope帮助页面中添加:
USAGE :cs add {file|dir} [pre-path] [flags]
[pre-path] is the pathname used with the -P command to cscope.发布于 2014-11-05 18:13:41
make cscope或者针对你的具体情况-
ARCH=x86 make cscopehttps://stackoverflow.com/questions/22938266
复制相似问题