当前位置: 首页 > ds >正文

Linux下VSCode开发环境配置(LSP)

        事实上一般来说,vscode的插件可以满足半分制九十以上的情况,但是当你面对一个比较大的项目时,自带的插件并不是很好。就LSP来说,自带的插件依赖是较弱的,所以当你在一个比较大的SDK下开发时,代码跳转等等相关功能都会失常

使用bear工具

好消息是,我查阅了相关资料后发现,vscode里的原生插件虽然依赖比较弱,但是它可以采纳bear生成的 compile_commands.json 文件(需要配置)

compile_commands.json

该文件会记录编译的各种信息,包括编译的各种依赖库,内部函数以及各种外部引用变量信息,头文件的路径位置等等信息。该文件由bear生成

sudo apt install bearbear -- make compile    #(选择你的make指令)

然后在VSCode中配置,首先切换到根目录的,打开隐藏的.vscode/c_cpp_properties文件(懒得写)当然你也SCode,这是工作目录对应的配置文件。

添加“compileCommands”,以及对应的路径:

完成之后,crtl+s保存一下,然后去你的主要代码看你的函数会不会子自动加载声明体,头文件能不能跳转。

进阶使用

        刚刚讲述的情况足够你在单一app或者demo下使用,但是当前你切换到其他的demo时,这个东西就不起作用了,而且你还没有办法配置vscode的配置文件同时指派两个编译文件。

        新的方法是使用jc将所有的json文件聚合,并且配置为每次打开工作区目录都自动聚合。

首先下载 jq:

sudp apt install jqpip3 install comdp

comdp也是一个聚合工具,但是我没有实践成功。

然后执行:

find . -name compile_commands.json    shopt globstar    #打开递归查找选项touch aggregate-compile-commands.sh

然后在脚本中写入:

#!/bin/bashls ./example/**/compile_commands.json
find . -name 'compile_commands.json' ! -path './compile_commands.json' -exec cat {} + | jq -s 'add'
echo "generate complete"

最后在.vscode下的task.json里配置:

源码:

{"version": "2.0.0","tasks": [{"label": "Aggregate Compile Commands","type": "shell","command": "${workspaceFolder}/scripts/aggregate-compile-commands.sh","group": {"kind": "build","isDefault": true},"problemMatcher": [],"presentation": {"reveal": "always","panel": "dedicated","clear": true}}]
}

至此,在example下的任意执行 code demo ,执行有对应生成的json文件,按下crtl shift P 执行对应的指令,就可以一键更新LSP通信文件了。 

http://www.xdnf.cn/news/12750.html

相关文章:

  • Docker容器部署elasticsearch8.*与Kibana8.*版本使用filebeat采集日志
  • 基于Python学习《Head First设计模式》第七章 适配器和外观模式
  • CppCon 2015 学习:Intro to the C++ Object Model
  • 能上Nature封面的idea!强化学习+卡尔曼滤波
  • Appium+python自动化(十二)- Android UIAutomator
  • [TI板]MSPM0G3507学习笔记(一) 超详细keil环境配置+烧录配置+空工程迁移+vscode配置+点灯
  • PyCharm集成Conda环境
  • 北大开源音频编辑模型PlayDiffusion,可实现音频局部编辑,比传统 AR 模型的效率高出 50 倍!
  • 【网站建设】网站 SEO 中 meta 信息修改全攻略 ✅
  • OkHttp 3.0源码解析:从设计理念到核心实现
  • SOC-ESP32S3部分:33-声学前端模型ESP-SR
  • 开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
  • Mac版Visual Studio Code Copilot 无法使用的解决方法
  • FSMC扩展外部SRAM
  • 服务器新建用户无法使用conda
  • 【python与生活】如何构建一个解读IPO招股书的算法?
  • QT进阶之路:带命名空间的自定义控件在Qt设计器与qss中的使用技巧
  • Android音频开发:Speex固定帧与变长帧编解码深度解析
  • Windows账户管理,修改密码,创建帐户...(无需密码)
  • k3s入门教程(集群部署、使用,镜像拉取失败网络问题排查)
  • C++.OpenGL (2/64)你好,三角形(Hello Triangle)
  • N2语法 列挙、話題提出
  • 黑盒测试用例设计方法-全
  • gvim比较两个文件不同并合并差异
  • 【三余升序数对个数】2022-4-17
  • 数学:学好数学需要对数系进行系统的对比和分析
  • 蓝牙技术栈BR/EDR和LE详解
  • Linux驱动学习day1
  • Numpy5——数组的扩充(相加、复制、广播)排序,形状调整
  • 计算机图形学:(七)渲染目标