用 emacs 浏览 C/C++ 项目

更新2021/10/18: 几个要注意的点截图:https://gitee.com/guyuming76/personal/commit/a285e1fc0d5be92e6e7a7a3bd1a2ebd8a8d9798c

----------------------------------------------------分割线下是过去的内容--------------------------------------

这两天刚学会用 emacs 读 C/C++ 项目代码,记录下踩过的坑。

主要是跟着 https://emacs-lsp.github.io/lsp-mode/tutorials/CPP-guide/ (下面称作原文)配的,系统环境是 ubuntu 20.04。

原文直接用 emacs 打开 emacs 源码来演示功能,而我希望打开 https://github.com/neutrinolabs/pulseaudio-module-xrdp ,所以一开始没有下载 emacs 的源码,而是直接 sudo apt install emacs, 装的是 26.3 版。

把原文 lsp-mode configuration 那段里面的 lisp 代码,贴进 ~/.emacs , 重启 emacs 后,打开 c 语言文件,想尝试 go to definition, find reference 等功能,却发现一个类似 “找不到编译数据库” 错,原来 lsp-mode 需要一个 compile_commands.json 文件, 如何生成? 先 sudo apt install bear , 然后在你原先运行 make 的目录下面运行 bear make, 就会在目录里产生这样一个文件。

然而,go to definition, find reference 功能还是不行,在标识符上点鼠标右键,根本不会出现包含这些功能的上下文菜单。一筹莫展,在网上狂搜,受启发运行了一下 which clangd, 结果返回空。
原来原文给过这样一个链接: https://clangd.llvm.org/installation.html ,教我在ubuntu 下
sudo apt-get install clangd-9。

我卸了clangd-9, 重新 sudo apt install clangd, 过了一关。

这里要提一下 emacs 菜单里面一堆的 buffer 子菜单,我一开始觉得莫名奇妙,后来发觉原来除了我打开的文件,系统产生的各种消息提示(日志?)也在这里,发觉系统有啥不对劲的时候可以先把各个buffer 看一遍。很多软件都是出问题后半天不知道日志文件在哪里。

但是,find reference 貌似还是不行,显示如下:
在这里插入图片描述
后来&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值