Linux下使用VScode开发ROS时clangd插件的使用

这篇具有很好参考价值的文章主要介绍了Linux下使用VScode开发ROS时clangd插件的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux下使用VScode开发ROS时clangd插件的使用

本人在最近刚开始接触Linux和ROS开发,在开发过程中发现,微软的C/C++的intelliSense的代码补全,纠错等功能是真的难用,恰好有学长跟我提起了clangd这个东西,而且以前用clion去写一些小的C/C++工程,想着怎么去配置一下在vscode上使用clangd,让自己写代码更舒服一些(主要是太懒了),于是就有了这篇文章。

由于本人是初学者,懂的东西很少,折腾了一天只是能做到能用clangd的一些功能。可能文章中也有些错误和术语使用错误,敬请各位指出,能给我一个学习改进的机会。

1.首先安装Vscode就不多说了,也有很多博客去安装教学。

2.配置ROS

ROS的配置部分,由于我是跟随B站上的教程学习的,可以直接移步教程,链接如下
【Autolabor初级教程】ROS机器人入门

2.1 下载插件(已安装好VScode)

2.1.1 C/C++

此插件就是上文提到的微软的C/C++,我们虽然使用他的intelliSense的代码补全,纠错等功能,但是他是ROS插件的依赖项,是ROS插件必不可少的一项
Linux下使用VScode开发ROS时clangd插件的使用

2.1.2 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

此插件对于新手来说比较友好,是一个汉化插件,如果英语好可以不用QAQ
Linux下使用VScode开发ROS时clangd插件的使用

2.1.3 CMake Tools

此插件不用多说,CMake
Linux下使用VScode开发ROS时clangd插件的使用

2.1.4 Python

也是ROS插件的依赖项之一,必不可少,而且ROS是支持C++和Python开发的
Linux下使用VScode开发ROS时clangd插件的使用

2.1.5 ROS

ROS插件本身(需要你提前已经安装好了ROS的任意版本,这个安装方式上方链接也有)
Linux下使用VScode开发ROS时clangd插件的使用

2.1.6 注意:

此处只是配置ROS,所以先不安装插件clangd(冲突弹窗很烦人0.0)

3.安装llvm+clang

直接在GitHub上有Releases,可以直接下载编译好的包
llvm/llvm-project

在此处找到Releases

Linux下使用VScode开发ROS时clangd插件的使用

点进去之后,我下载的是

Linux下使用VScode开发ROS时clangd插件的使用

注意:
可以点击下载,但是速度一言难尽啊,可以吧鼠标放在蓝字(就是上图箭头指向的蓝字)上右键获取下载网址,找到代理网站下载
代理网站网址奉上,点击蓝字进入,把刚才复制进来的网址输入进去下载即可
GitHub Proxy
Linux下使用VScode开发ROS时clangd插件的使用

解压

下载后找到下载的目标目录(一般都是Downloads)

tar -xf clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04.tar.xz
mkdir llvm
mv clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04 llvm

或者直接将压缩包移动到llvm目录下再解压

设置环境变量

在主目录中按下Ctrl+H (显示隐藏文件)找到.bashrc右键编辑,在最后加上
export PATH="/home/wang/Downloads/llvm/clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin:$PATH"

保存关闭(双引号内就是刚才解压的文件夹中的bin目录所在路径,可以在bin目录下打开终端使用pwd获取路径)

打开终端,运行命令source .bashrc刷新环境变量

查看是否安装成功

打开终端,输入clang --version,有版本说明即安装成功

2023年6月20日补:
如果安装完毕输入clang --version,出现报错clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory,解决方式:sudo apt-get install libtinfo5

注意:上述文件名称,目录路径,均按照我的电脑而来,如果下载不同版本的llvm,在解压的时候记得改一下名称,并且设置环境变量的时候最好用pwd获取路径(因为我直接安装在了Downloads目录下了)

也可以直接apt下载,但是他是安装的10版本的,但是一些重要功能都是在10版本之后出的,所以就不做过多的赘述了

4.配置VScode使用clangd

关于如何去在VScode中使用clangd开发ROS,需要达成以下几点:
1.解决微软的C/C++的intelliSense与clangd的冲突
2.配置编译指令使生成compile_commands.json文件

4.1 安装插件clangd

Linux下使用VScode开发ROS时clangd插件的使用

4.2 解决微软的C/C++的intelliSense与clangd的冲突

由于微软的C/C++的intelliSense与clangd的作用都是代码补全、纠错等功能,所以在使用时是有冲突的,但是我们又不能卸载插件C/C++,因为他是ROS插件的依赖项,所以需要解决冲突
实际上,安装完clangd插件之后,VScode左下角会弹窗描述该问题
Linux下使用VScode开发ROS时clangd插件的使用

这时,我们只需点击Disable IntelliSense即可

4.3 配置编译指令使生成compile_commands.json文件

4.3.1 compile_commands.json

compile_commands.json文件是使用clangd的一个重要文件。
在VScode的官网插件clangd的官方文档中有描述:

要理解源代码,clangd需要知道构建标志。

默认情况下,clangd将假设您的代码构建为clang-some_file.cc,您可能会收到关于缺少#included文件等错误。

compile_commands.json(编译命令.json)#

此文件为项目中的每个源文件提供编译命令。它通常由工具生成。

clangd将查找您编辑的文件的父目录,以及名为build/的子目录。例如,如果编辑 S R C / g u i / w i n d o w . c p p ,我们将在 SRC/gui/window.cpp,我们将在 SRC/gui/window.cpp,我们将在SRC/gi/、 S R C / g u i d / b u i l d / 、 SRC/guid/build/、 SRC/guid/build/SRC/、$SSRC/build/…

所以想要clangd能够在开发过程中能够找到#include文件,和正常使用代码补全等功能,我们需要生成compile_commands.json文件

4.3.2 修改cmake指令以生成compile_commands.json文件

在官方文档中,这样描述了使用CMake构建的项目的compile_commands.json文件生成方式:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1
但是ROS中使用的不是CMake,而是将cmake与make的编译方式做了一个封装的指令工具catkin_make

所以我们在编译的时候使用指令catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1即可
如果我们使用的是在上述ROS教程中的配置tasks.json去用快捷键Ctrl+Shift+B去编译源代码,则需要将tasks.json改成以下形式

{
	// 有关 tasks.json 格式的文档,请参见
		// https://go.microsoft.com/fwlink/?LinkId=733558
		"version": "2.0.0",
		"tasks": [
			{
				"label": "catkin_make:debug", //代表提示的描述性信息
				"type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
				"command": "catkin_make",//这个是我们需要运行的命令
				"args": ["-DCMAKE_EXPORT_COMPILE_COMMANDS=1"],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
				"group": {"kind":"build","isDefault":true},
				"presentation": {
					"reveal": "always"//可选always或者silence,代表是否输出信息
				},
				"problemMatcher": "$msCompile"
			}
		]
	}
4.3.2.1 如何生成tasks.json文件

如果没有tasks.json文件,使用快捷键Ctrl+Shift+B调用编译后选择catkin_make:build一项点击后方小齿轮即可。

5.使用clangd

1.当我们按照上述方法配置好之后,在一个新的工作空间编写程序时仍然会出现#include 报错的情况,那是因为我们还未编译文件,需要创建一个cpp文件,修改CMakeLists.txt文件后编译一下生成compile_commands.json文件

注意:由于compile_commands.json文件的生成需要检测到实际的编译过程,所以当出现#include报错的情况,可以尝试编译一下

2.但是此时打开以前的工程,即未配置clangd之前就已经写完的工程,仍会出现#include报错的情况,那是因为检测不到实际的编译过程,可以再终端中先使用命令catkin_make clean后再进行编译文章来源地址https://www.toymoban.com/news/detail-434457.html

到了这里,关于Linux下使用VScode开发ROS时clangd插件的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vscode基于clangd实现Android/Linux代码跳转】

    背景: 在开发大型工程例如Android或Linux时若我们使用vscode搭配官方的C/C++插件使用发现,经常很多代码都无法跳转,代码补全功能几乎是废的,通过网友以及同事身边了解之后发现 vscode+clangd可以实现代码任意跳转补全等功能 ,因此本文通过讲解如何配置clangd相关环境实现高

    2024年02月11日
    浏览(37)
  • 看代码神器:vscode+clangd轻松实现linux内核代码跳转(图文并茂)

    一点感悟 还是那句老话:工欲善其事必先利其器。在做代码开发之前,先准备好开发过程帮助提效的工具,能起到事半功倍的效果。比如本文要讲的vscode下进行linux内核代码开发或者阅读就是很好例子,如果没有先把代码跳转等基础环境搭建好,对后续的代码阅读和开发都可

    2024年01月23日
    浏览(43)
  • 使用VScode + clangd 阅读 c/c++ 源码环境搭建

    在嵌入式软件开发的工作中,我们常常需要分析C/C++代码,比如linux kernel 的代码,而公司的代码一般都会存放在服务器中,服务器一般是linux,且无法联网,我们只能通过本地笔记本ssh访问服务器,这就导致阅读linux 源码时,需要跳转定义、声明时比较麻烦,本文就介绍了使

    2024年02月10日
    浏览(42)
  • 使用 VScode 开发 ROS 的Python程序(简例)

    ROS学习笔记文章目录 01. ROS学习笔记(一)—Linux安装VScode 02. ROS学习笔记(二)—使用 VScode 开发 ROS 的Python程序(简例) 本篇作为ROS学习的第二篇,是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序,输出“Hello!”的内容介绍。 首先我们来了解下ROS的文件系统,ROS文件系统级

    2024年02月13日
    浏览(29)
  • [ vscode + clangd + gcc + gdb + cmake] 一文带你构造C/C++开发环境 #支持嵌入式开发 #超详细 #小白

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:本节讲解了为什么需要配置这样一套开发环境,可以跳过 本文力求通俗、详细的讲解 C程序开发 环境配置。深入浅出的讲解以及大量的图片对小白更友好。看完本文你将得到一套 vscode + gcc + gdb

    2024年02月20日
    浏览(36)
  • vscode的ros拓展(插件)无法渲染urdf

    之前在vscode中一直用得好好的urdf预览功能,突然在某一天,不行了。 执行 URDF Preview之后,虽然弹出了一个URDF Preview的窗口,但是这个窗口里面啥都没有。没有网格、没有模型。 一开始我也懒得纠结是什么问题,先不使用这个功能。 这几天有空了,到了这个拓展的github网站

    2024年02月13日
    浏览(37)
  • 关于在Vscode安装clangd的教程(分别在linux和windows)[很详细,很细节,很全!]【Windows端:缺少 language enginee的解决方法】

    一.背景: 在Vscode中,使用c/c++ 编译器(插件),但是自带的补全语法不好 clang 也是个编译器,而其对应的clangd的补全语法的功能很友善 所以在Vscode中,我们可以使用插件c/c++编译和执行,但是补全的语法用clangd,话不多说,直接开干! 安装分为2部分,linux端和本地端 1.先在

    2024年02月20日
    浏览(33)
  • VSCode使用Makefile Tools插件开发C/C++程序

    提起Makefile,可能有人会觉得它已经过时了,毕竟现在有比它更好的工具,比如CMake,XMake,Meson等等,但是在Linux下很多C/C++源码都是直接或者间接使用Makefile文件来编译项目的,可以说Makefile是基石。 另外,针对C++ 20的一些特性,像比较流行的CMake工具,目前支持还不完善,如

    2024年01月22日
    浏览(34)
  • 为vscode配置clangd

    clangd能提供更好的补全和提示,自带检查一些warning的问题,可以减少大家未来找存在的warning的时间。经过配置可以在unittest和timetest中也实现自动补全,平均速度比vscode c/c++插件更快。 在插件市场搜索clangd。安装即可。注意c/c++可以不用卸载,否则调试可能会有点问题。 在

    2023年04月08日
    浏览(34)
  • 编程辅助插件BitoAI使用指南(以VSCode开发环境为例安装并使用BitoAI插件从而提高生产效率)

    2023年是AI爆发元年,已经被各种AI工具、新闻轰炸了几个月,只有一种感觉:时间不够用! 本插件使用与ChatGPT相同的模型!目前免费,且拥有强大的辅助能力,可以数倍提升程序开发能力,并大大提高开发效率。 Bito AI使编写代码、理解语法、编写测试用例、解释代码、评论

    2023年04月25日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包