最近迷上了vscode,发现它的功能更全,使用更加方便,于是想总结一下他的使用技巧,使得想使用它的人能够快速上手,少走弯路。如果有写的不对的地方,欢迎大家指出。
参考网站:ubuntu安装vscode的两种方法
ros项目调试:vscode下配置开发ROS项目
ubuntu 下vscode 禁用gpu 加速
IDEs-ROS Wiki
VS Code创建、调试ROS项目
关于vscode的安装,建议不要使用ubuntu的软件中心进行一键式安装,不利于后续修改启动器,设置相关参数,推荐从官网手动下载deb包,进行手动安装。
sudo dpkg -i code_1.31.1-1549938243_amd64.deb
sudo apt-get -f install # 如果安装出错
使用vscode多了之后,会发现它莫名其妙就非常卡,那是因为vscode后台使用了gpu加速进行代码解析,可以直接关闭,这样使用起来更加流畅。
gedit /usr/share/applications/code.desktop
在Exec=/usr/share/code/code 后面添加 --disable-gpu即可
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/share/code/code --disable-gpu -no-sandbox --unity-launch %F
Icon=/usr/share/pixmaps/com.visualstudio.code.png
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;
Actions=new-empty-window;
Keywords=vscode;
X-Desktop-File-Install-Version=0.24
[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/share/code/code --disable-gpu --no-sandbox --new-window %F
Icon=/usr/share/pixmaps/com.visualstudio.code.png
首先,需要最基本的ROS工作空间,包括build,devel,src文件,同时在src下通过“catkin_init_workplace”进行李初始化。
打开vscode,选择文件->打开文件夹,或者在“欢迎使用界面”选择启动->打开文件夹,打开刚才创建的ros工作空间即可。
注意是工作空间的顶层目录,选择确定即可!
可以在终端输入指令,手动创建一个功能包:
右键点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称beginner_tutorials,按Enter确认,输入包的依赖“std_msgs rospy roscpp”,空格隔开,按Enter确认。
当准备好ROS功能包之后,还需要做以下准备工作才能打开ROS工程。
关于编译配置,也就是配置catkin_make编译指令,这里有几种方法,分别介绍一下。
首先,在用vscode编译之前,需要在终端手动catkin_make编译一下,在终端输入指令:
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
或者,将该指令
## 设置自动生成compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
添加到顶层cmakelist.txt当中:
cd catkin_ws
sudo gedit src/CMakeLists.txt
直接catkin_make也行:
catkin_make
然后,在.vscode/c_cpp_properties.json中添加一句指令:
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
比如,像下面这样的:
{
"configurations": [
{
"browse": {
"databaseFilename": "",
"limitSymbolsToIncludedHeaders": true
},
"name": "ROS",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
}
],
"version": 4
}
如果没有c_cpp_properties.json,则需要自己手动生成c_cpp_properties.json。如果发现cpp文件代码中的 #include <> 这句话是有下划线警示的,提示找不到文件,这时可以使用鼠标悬浮功能,点击“红色灯泡”,点击edit c_cpp_properties.json选项,vscode会自动在配置文件夹中新建.vscode/文件夹,同时在里面初始化了c_cpp_properties.json文件。
首先,在用vscode编译之前,直接在终端手动catkin_make编译即可:
catkin_make
然后,在.vscode/settings.json中添加如下指令:
"cmake.sourceDirectory": "${workspaceFolder}/src",
"cmake.buildDirectory": "${workspaceFolder}/build",
像这样的:
{
"python.autoComplete.extraPaths": [
"/home/bran/catkin_ws/devel/lib/python2.7/dist-packages",
"/opt/ros/melodic/lib/python2.7/dist-packages"
],
"cmake.sourceDirectory": "${workspaceFolder}/src",
"cmake.buildDirectory": "${workspaceFolder}/build"
}
该方法不需要json文件,也不需要任何设置,直接让vscode寻找cmakelist.txt,然后自动配置工程参数。但是该方法设置后,只能用于ROS相关工程的开发,如果是其他工程,可能需要作其他更改。
该方法也非常简单,就是配置cmake插件的cmakelist.txt的检索目录。
打开vscode的设置->用户->插件,设置一下Cmake: Source Directory和Cmake: Build Directory的路径:
其实,很快就能发现,这一步其实和方法(2)差不多,唯一的区别就是该方法设置了整个IDE的编译环境,这样只要是开发ROS工程,就不需要重复配置了。
还需要提醒一点的就是,文件夹.vscode的配置文件叫做“工作区的配置”,会自动覆盖IDE的默认配置。
最后,通过以上任意一种方法的配置,就可以直接通过vscode进行工程编译了。选择最下栏中的“Build”齿轮,就会初始化工程编译参数:
然后,在最上方出现编译工具选择,鼠标选择“catkin_make”即可。
最精彩的要属Vscode的调试功能了,
首先,在当前工程的cmakelist.txt中需要添加编译类型指令“set(CMAKE_BUILD_TYPE Debug) ”,比如这样:
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)
set(CMAKE_BUILD_TYPE Debug)
然后,选择断点,进行编译即可。
再然后,点击左侧“瓢虫按钮”,点击创建launch.json文件->选择默认配置即可。
launch.json文件会像下面这样:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) run_talker",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/devel/lib/beginner_tutorials/talker",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
然后,再单开一个终端启动roscore,就能进行debug了。
点击左侧“瓢虫按钮”后,左上角运行处,选择下拉菜单->添加配置:
然后,再选择ROS:Launch即可,填写roslaunch的绝对路径。
比如下面这样,
{
"name": "ROS: Launch_listener",
"type": "ros",
"request": "launch",
"target": "/home/bran/catkin_ws/src/beginner_tutorials/launch/listener_up.launch"
},
最后,就能通过roslaunch启动ros节点了。