C++ cscope:如何使用cscope使用命令行搜索符号?

C++ cscope:如何使用cscope使用命令行搜索符号?,c++,c,vim,emacs,cscope,C++,C,Vim,Emacs,Cscope,我在网上找到的所有cscope教程都讨论了如何使用cscope的交互模式在vim和emacs等编辑器中搜索符号。但我认为应该可以在终端中发出命令来执行以下操作 cscope -d -some_options <my symbol> cscope-d-一些选项 我应该能够在stdout中看到结果列表,而不必进入ncurse UI并在那里执行所有操作。我认为这是可能的,因为“唯一”的前端cbrowser可以在其TclTK UI中执行类似的操作。但不幸的是,我无法理解代码 但是,我没有

我在网上找到的所有cscope教程都讨论了如何使用cscope的交互模式在vim和emacs等编辑器中搜索符号。但我认为应该可以在终端中发出命令来执行以下操作

cscope -d -some_options <my symbol>
cscope-d-一些选项
我应该能够在stdout中看到结果列表,而不必进入ncurse UI并在那里执行所有操作。我认为这是可能的,因为“唯一”的前端cbrowser可以在其TclTK UI中执行类似的操作。但不幸的是,我无法理解代码

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

我是在做梦还是有一种没有记录的方式

谢谢

更新

一些进展:如果我做一个小项目的几个文件与子目录结构。那么rici的答案是现成的。一个更大的项目(数千个文件夹结构复杂的文件)。即使在项目文件夹(也是我当前的工作目录)的根目录中存在cscope.out和cscope.files,我也无法从相同的命令和符号中获得任何信息。我怀疑该命令存在可伸缩性问题。我也试过指挥

cat cscope.files | xargs cscope -d -L1 <symbol> -i
cat cscope.files | xargs cscope-d-L1-i
无济于事

更新

非常奇怪!我试着用一些其他的符号。事实证明,我正在搜索的特定符号无法使用命令行显示。但我尝试过的所有其他符号都有效。cbrowser在找到“失败”符号时没有问题。不管怎样,我只是运气不好。我将在命令行中单独询问有关此异常的问题


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

您可能正在寻找以下内容:

cscope -L1<symbol>

您可以使用
-R
版本调用cscope进行递归搜索。例如:

cscope -d -f/path/to/cscope.out -R -L1 some_symbol
(搜索某些_符号的定义)

(显示调用某些_符号的所有位置)

如果cscope.out位于当前工作目录中,则可以省略
-f
选项

请注意,如果省略
-R
,则上述调用将为索引符号生成零结果。非常旧的cscope版本不支持
-R
。例如,版本15.8a确实支持它

-L
的可能值列表如下:

0: Find this C symbol
1: Find this definition
2: Find functions called by this function
3: Find functions calling this function
4: Find this text string
6: Find this egrep pattern
7: Find this file
8: Find files #including this file
9: Find places where this symbol is assigned a value
创建
cscope.out
文件时,也可以使用
-R
选项,例如:

cscope -bR

我使用:
grep-options*.c
但这是纯文本搜索。cscope要精确得多。是的,但有时候你不需要大炮来杀死一只苍蝇。你问了另外一个问题吗?如果是,你能链接它吗?不,我没有。对不起,好久不见了。我不记得细节了。我的错!但我认为你的回答很有道理。我将其标记为正确,稍后将对其进行测试。我在我的cscope.out所在的文件夹下尝试了您的行“cscope-d-L1”。不幸的是,它什么也没给我。另一方面,在同一位置启动“cbrowser”,我可以提交相同的查询,并在UI中列出结果。我错过什么了吗?我试过命令行,选项和符号参数之间有空格,也有空格。@kakyo:我能说的就是它对我有用。您实际上没有键入
,对吗?您是否尝试删除cscope.out并让cscope重新生成它(即,不使用-d标志)?否,我知道符号本身并没有:)。我只是尝试删除cscope.out,然后删除“scope-L1”。令我惊讶的是,cscope没有动态生成文件;相反,我得到了“cscope:找不到源文件”。这是因为我的代码位于相对于cscope.out的子文件夹中吗?我必须在那个命令中指定源文件吗?@kakyo:是的,如果它们的位置不明显的话。您可以使用通配符。请确保在cscope.file中指定了文件名,并且该操作正常
0: Find this C symbol
1: Find this definition
2: Find functions called by this function
3: Find functions calling this function
4: Find this text string
6: Find this egrep pattern
7: Find this file
8: Find files #including this file
9: Find places where this symbol is assigned a value
cscope -bR