当前位置:网站首页>VScode配置ROS开发环境:修改代码不生效问题原因及解决方法
VScode配置ROS开发环境:修改代码不生效问题原因及解决方法
2022-07-25 09:24:00 【墨色玫瑰】
问题描述
这段时间在使用VsCode进行ROS程序开发的时候,经常会出现一个问题,就是代码已经做了修改,但是编译之后得到的可执行文件却始终没有更新代码中做的修改内容。
VSCode开发环境环境:
主要使用CmakeTools插件,通过该插件能够自动进行Cmake配置并且生成自动代码补全等的配置,可以免去手动设置一大堆配置文件。其他插件对于本文问题无影响,包括:C/C++插件,Cmake插件,ROS插件(微软提供)。
问题原因排查
通过阅读插件自动Cmake输出的日志和检查build文件夹下目录结构发现,插件CmakeTools在自动执行cmake配置时将devel目录设置到了build目录下,也就是说,本来应该生成可执行文件到工作空间下的devel文件夹,但通过插件后,它将这个文件夹重新定位到了build/devel,导致后来通过插件编译的结果全都生成到了该文件夹下,因此工作空间devel文件夹下的可执行文件始终为得到更新,进而导致了我遇到的问题。找到原因之后,解决起来就不难了。发现问题的日志内容如下:
生成的build目录结构如下,可以看到devel正处在build文件夹下:
解决方法
通过日志可以看出,devel文件夹的位置是通过一个名为 C A T K I N _ D E V E L _ P R E F I X CATKIN\_DEVEL\_PREFIX CATKIN_DEVEL_PREFIX的cmake变量来设置的,改变量默认为devel文件夹,但是是在build文件夹下的devel,因此我们只需要将这个变量的值指定为工作空间下的devel文件夹即可。
具体操作如下:
打开scode的设置settings界面,找到extension下的CMakeTools,这时会进入到该插件的详细设置页面,如下图所示:

在这个界面往下翻找到Cmake:Configettings选项,如下图所示,点开Edit in settings.json

点击将会打开配置文件,记住该配置文件与工程目录下.vscode/setting.json不是同一个文件,一定要通过这里打开。配置文件如下图,点开后会自动添加并定位到"cmake.configureSettings"设置内容,我们在其中添加变量 C A T K I N _ D E V E L _ P R E F I X CATKIN\_DEVEL\_PREFIX CATKIN_DEVEL_PREFIX的值为工作空间的devel文件夹。

到此问题已经得到解决。删除原来的build文件夹,右键工作空间src文件夹下的CMakeLists.txt文件,点击ConfigureAll重新自动配置项目即可。重新配置时在输出日志中可以看到如下内容:

Tips
关于变量的值,理论上可以设置成任意自定义的位置,但是若设置成自定义的位置,想要运行节点之前需要source该目录下的setup.bash脚本。解决该问题之后,就可以使用CmakeTools插件提供的编译按钮对程序进行编译,无论是编译全部还是单独编译某一个节点均可。
边栏推荐
- Segmentation based deep learning approach for surface defect detection
- 无线振弦采集仪的使用常见问题
- Mlx90640 infrared thermal imager temperature measurement module development notes (V)
- 数据分析面试记录1-5
- How to import a large amount of data in MATLAB
- Connection and data reading of hand-held vibrating wire vh501tc collector sensor
- 单目深度估计模型Featdepth实战中的问题和拓展
- Customize dialog to realize the pop-up box of privacy clause statement imitating Netease cloud music
- ESP32连接阿里云MQTT物联网平台
- Exciting method and voltage of vibrating wire sensor by hand-held vibrating wire acquisition instrument
猜你喜欢

深度估计自监督模型monodepth2在自己数据集的实战——单卡/多卡训练、推理、Onnx转换和量化指标评估

无线中继采集仪的常见问题

数字IC设计SOC入门进阶

Segmentation-based deep-learning approach for surface-defectdetection(基于分割的表面缺陷深度学习检测方法)
![[deep learning] self encoder](/img/7e/c3229b489ec72ba5d527f6a00ace01.png)
[deep learning] self encoder

Mixed supervision for surface defect detection: from weakly to fully supervised learning

工程仪器振弦传感器无线采集仪的采集数据发送方式及在线监测系统

ESP32定时中断实现单、双击、长按等功能的按键状态机Arduino代码

CCF 201512-4 送货

TM1637带秒点四位LED显示器模块ARDUINO驱动程序
随机推荐
缺陷检测网络--混合监督(kolektor缺陷数据集复现)
Preliminary understanding and implementation of wechat applet bottom navigation bar
Some skills to reduce the complexity of program space
CDA LEVELⅠ2021新版模拟题二(附答案)
Gartner 2022年顶尖科技趋势之超级自动化
【深度学习模型部署】使用TensorFlow Serving + Tornado部署深度学习模型
Swift simple implementation of to-do list
单目深度估计模型Featdepth实战中的问题和拓展
Fundamentals of C language
Creation of adjacency table of undirected connected graph output breadth depth traversal
单目深度估计基础理论和论文学习总结
Defect detection network -- hybrid supervision (kolektor defect data set reproduction)
[data mining] nearest neighbor and Bayesian classifier
从鱼眼到环视到多任务王炸——盘点Valeo视觉深度估计经典文章(从FisheyeDistanceNet到OmniDet)(下)
TM1638 LED数码显示模块ARDUINO驱动代码
How Android uses ADB command to view application local database
MLX90640 红外热成像仪测温模块开发说明
CCF 201509-4 高速公路
CCF 201509-2 日期计算
TM1637带秒点四位LED显示器模块ARDUINO驱动程序