gpt4 book ai didi

Linux 内核 makefile cscope 目标

转载 作者:IT王子 更新时间:2023-10-29 01:16:14 31 4
gpt4 key购买 nike

当我通过发出 make cscope 生成 Linux 内核 cscope 数据库时,我得到了数据库文件以及具有相对 路径的文件列表。这对我来说是个问题,因为稍后当我从内核以外的任何目录将外部内核的数据库附加到 vim 编辑器中时,我可以轻松地搜索特定符号 BUT 我无法打开包含该符号的文件.

我已经编写了下一个 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_absmake cscope_ext 我还没有找到。

有什么建议吗?

最佳答案

首先,创建特定于特定体系结构的 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 nocsre

方法 2:(来自 Aaron Hs 在 this 问题中的回答)在 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.

关于Linux 内核 makefile cscope 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938266/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com