我在网上找到的所有cscope教程都讨论了如何使用cscope的交互模式在vim和emacs等编辑器中搜索符号。但我认为应该可以在终端中发出命令来执行以下操作
cscope -d -some_options <my symbol>
我应该能够在stdout中看到结果列表,而不必进入ncurse UI并在那里执行所有操作。我认为这是可能的,因为“唯一”的前端cbrowser可以在它的TclTK UI中做这样的事情。但不幸的是,代码完全超出了我的能力。
但是,我没有找到有关此功能的文档。
我是在做梦还是有一个没有记录的方法来做到这一点?
谢谢!
更新
一些进展:如果我做一个小项目的几个文件与子目录结构。那么rici的答案就很好用了。更大的项目(数千个文件和复杂的文件夹结构)。即使cscope.out和cscope.files存在于项目文件夹的根目录(也是我当前的工作目录),我从相同的命令和相同的符号中什么也得不到。我怀疑该命令存在可伸缩性问题。我也试过指挥
cat cscope.files | xargs cscope -d -L1 <symbol> -i
但毫无结果
更新
太诡异了!我试着用其他的符号。原来我正在搜索的特定符号无法使用命令行显示。但我试过的其他符号都起作用了。而且cbrowser在查找“失败”符号时没有问题。总之,我只是运气不好。我将在命令行中问一个关于此异常的单独问题。
我把理西的答案标为正确。
2条答案
按热度按时间wgmfuz8q1#
你可能正在寻找这个:
您也可以使用
-d
,尽管如果您正在修改文件,那么cscope更新它的数据库是很好的。-L
表示“执行一个单行命令”,下面的数字(在本例中为1
)也可以作为一个单独的选项编写,它是特定的命令,手册页将其混淆为“字段”。“字段”由交互式cscope提示符给出;我为了方便起见加上了这个数字。“this”是指数字后面的文本;请记住,这是一个模式,所以你不必键入完整的符号。Manpage引用
https://linux.die.net/man/1/cscope
yqkkidmi2#
您可以使用
-R
版本调用cscope进行递归搜索。例如:(搜索some_symbol的定义)
(显示调用some_symbol的所有位置)
如果cscope.out位于当前工作目录中,则可以省略
-f
选项。请注意,如果省略
-R
,则上述调用对于索引符号产生零结果。非常老的cscope版本不支持-R
。例如,版本15.8a确实支持它。-L
的可能值列表为:在创建
cscope.out
文件时也可以使用-R
选项,例如: