c++ - cscope:如何使用 cscope 通过命令行搜索符号?

标签 c++ c vim emacs cscope

我在网上找到的所有cscope教程都是讲如何使用cscope的交互方式在vim、emacs等编辑器中搜索符号的。但我认为应该可以在终端中发出命令来执行类似

的操作
cscope -d -some_options <my symbol>

而且我应该能够在标准输出中看到结果列表,而不必进入 ncurse 用户界面并在那里执行所有操作。我认为这是可能的,因为“唯一的”前端 cbrowser 可以在其 TclTK UI 中执行类似的操作。但不幸的是,代码超出了我的范围。

但是,我没有找到关于此功能的文档。

我是在做梦还是没有记录在案的方法?

谢谢!

更新

一些进步:如果我用子目录结构制作一个包含几个文件的小项目。然后 rici 的答案开箱即用。使用更大的项目(数千个具有复杂文件夹结构的文件)。即使在项目文件夹的根目录(也是我当前的工作目录)中存在 cscope.out 和 cscope.files,我从相同的命令和相同的符号中什么也得不到。我怀疑该命令存在可伸缩性问题。我也试过命令

cat cscope.files | xargs cscope -d -L1 <symbol> -i

没用。

更新

太奇怪了!我尝试使用其他一些符号。原来我正在搜索的特定符号无法使用命令行显示。但是我尝试过的所有其他符号都有效。并且 cbrowser 可以毫无问题地找到那个“失败”的符号。不管怎样,我只是运气不好。我将在命令行中询问有关此异常的单独问题。

我将 rici 的答案标记为正确。

最佳答案

您可能正在寻找这个:

cscope -L1<symbol>

您也可以使用 -d,尽管如果您正在修改文件,cscope 更新它的数据库是件好事。

-L 表示“执行一个面向行的命令”,后面的数字(本例中为 1)也可以单独写成选项,是特定的命令,联机帮助页混淆地称为“字段”。 “字段”由交互式 cscope 提示给出;为了方便,我添加了数字。 “this”指的是数字后面的文本;请记住,这是一种模式,因此您不必输入完整的符号。

 0 Find this C symbol:
 1 Find this function definition:
 2 Find functions called by this function:
 3 Find functions calling this function:
 4 Find this text string:
 5 Change this text string:
 6 Find this egrep pattern:
 7 Find this file:
 8 Find files #including this file:

关于c++ - cscope:如何使用 cscope 通过命令行搜索符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14915971/

相关文章:

vim - 在 VIM 中处理本身是源(相对)源文件的源文件的最优雅的方法是什么?

c++ - 如何在不使用 IDE 的情况下从 cpp 文件自动生成/更新头文件?

Vim:空格分隔的数字列表

c++ - AVL 树和双向链表

c++ - 返回字符串中模式的所有非重叠匹配项

c - CUDA 上纹理内存的结构

c - 如何从 double 转换为 signed short?

c++ - 使用非正方形分辨率时,过剩球体会出现拉伸(stretch)

c++ - 为什么使用LLDB时STL中设置的断点是 "skipped/ignored"?

c - 将两个 int 字符添加到一个 char 数组或字符串中