对 C 项目使用可视代码时看不到"查找所有引用"选项



尝试Microsoft Visual Code,找不到右键单击菜单中的所有引用?我想念什么?

查找Microsoft的C/C 工具中不存在所有参考选项,也不捆绑在VSCODE中。

https://github.com/microsoft/vscode-cpptools/issues/15

您需要安装VSC的C/C 扩展名,您可以在此处或在VSC Marketplace

找到该扩展

总而言之,您需要借助GNU Global标签扩展名 gnu global安装C/C Intellisense,并在工作区文件夹上运行gtags。/p>

大多数人都会安装扩展名,但不能安装GNU全局,您可以通过执行which global查看二进制或global --version的路径,以检查版本是否为6.5或更高,如扩展名词中所示。

如果您以前做过这种事情,则从源构建和安装" global "是很简单的苹果,这是我在Ubuntu 19.04机器上安装GNU Global的方法。希望这可以轻松地适应其他Linux环境。

1)下载最新版本

wget http://tamacom.com/global/global-6.6.3.tar.gz

2)提取文件并进入其文件夹

tar -xzvf global-6.6.3.tar.gz
cd global-6.6.3

3)准备构建

./configure

4)检查是否需要依赖项并安装

我遇到了这个错误:

配置:检查" ncurses.h file的位置" ...配置:错误: 需要诅咒库,但找不到。如果您不使用 gtags-cscope,请尝试./configure -disable-gtagscscope

要找出如何获取此丢失的文件,我们可以使用apt-file。安装它:

sudo apt install apt-file

应该告诉您"系统范围的缓存是空的。遵循建议:

sudo apt-file update

现在我们可以做:

apt-file find ncurses.h

显示:

ekg2-core: /usr/share/doc/ekg2-core/book-en/plugin-ncurses.html
ekg2-core: /usr/share/doc/ekg2-core/book-pl/plugin-ncurses.html
latrace: /etc/latrace.d/headers/ncurses.h
libghc-ncurses-doc: /usr/lib/ghc-doc/haddock/ncurses-0.2.16/ncurses.haddock
libncurses-dev: /usr/include/ncurses.h
libncurses-dev: /usr/include/ncursesw/ncurses.h

"/usr/include/"文件夹是一个很好的提示,即我们需要" libncurses-dev"。顺便说一句,在安装构建软件包时,带有"开发"后缀的包装通常是正确的:

sudo apt install libncurses-dev

这是一个迭代过程。返回步骤3,直到./configure不再返回错误。对我来说幸运的是,就是这样。

5)构建全局

这只是通常的make。我遇到了另一个错误:

警告:系统上缺少'MakeInfo'。

用:

固定的
sudo apt install texinfo

再次运行make,一切都很好。

6)安装

您需要将其作为root运行,以便它可以安装到root拥有的目录,例如"/usr/local/bin"。这些可能已经在您的路径环境变量上,这意味着我们只需要做:

sudo make install

7)创建标签文件

让我们检查一下我们现在是否正确安装了它:

global --version

显示

全球(GNU全球)6.6.3 由伯克利DB 1.85提供支持。版权(C)1996-2018 TAMA 通信公司许可GPLV3 :GNU GPL版本3或更高版本 http://www.gnu.org/licenses/gpl.html这是免费软件;你是 自由更改并重新分配它。没有保证, 法律允许的范围。

现在转到您的工作区文件夹,然后进行:

gtags

它不会告诉您任何事情,因此,如果您没有错误,就是这样。现在,您可以返回VS代码,然后再次尝试" 查找所有参考"。它应该只是工作!

顺便说一句,Netbeans 8.2曾经具有非常好的"查找参考"功能,甚至是一个很酷的呼叫图,如果您获得了C/C 捆绑包,并且一切都可以使用。自Apache接管该项目以来,现在在最近的版本中已经消失了,但是好消息是,一旦完成了此安装,VS代码就非常好。和与GDB岩石的VS代码集成!

今天的状态:

  • c/c vsc的伸展仍然不支持这一点。最新的" Insider"版本0.26正在搜索 - 非常非常慢 - 找不到所有参考。

  • gnu Global无法正确理解C (搜索对myClass :: open()的所有引用均在代码中找到所有"打开"函数 - 不仅属于此类)

现在工作解决方案:CCLS请参阅https://github.com/maskray/ccls/wiki/visual-studio-code

最新更新