目录

前言:

一、问题分析

1.如何查看.cpp文件的修改时间

2.查看.o文件的修改时间

二、问题原因

三、解决办法

1.安装Dev Containers插件

2.Dev Containers使用方法

四、结果展示


前言:

开始的时候我下载了vscode中的docker插件,他自动又给我安装了Container Tool插件,我可以直接使用Container Tool进入容器修改代码。但是碰到了这个问题,就是我修改cpp代码后,重新编译,但是修改无效。甚至我故意加上语法错误,但是编译还是可以通过。每次只有catkin clean一下,才可以重新编译,下面记录这个问题的解决办法。

一、问题分析

        对于catkin build以及catkin_make,他们编译的时候会考虑.cpp文件和.o文件的修改时间,如果.cpp文件的修改时间在.o文件之前,那么这个cpp文件就不会重新被编译了。

1.如何查看.cpp文件的修改时间

命令

stat test_node.cpp

cpp修改的时间就是Modify对应的时间,至少使用catkin编译的时候对比的是这个时间。

2.查看.o文件的修改时间

.o文件的目录在 build/功能包/CMakeFiles/节点名.dir/src目录下

二、问题原因

        通过上面两个截图我们可以看出,即使cpp文件修改时间在.o文件之后,但是由于Modify时间在.o文件之前,所以即使修改了编译也给忽视了。

        这是由于我是用的是vscode的docker插件自带的Container Tool插件,它能改文件内容,但是对于文件的状态,Change时间发生变化,但是Modify时间不变,导致编译忽视。

        避坑下面的插件。

三、解决办法

1.安装Dev Containers插件

        使用新的插件,名称是Dev Containers,安装发布版本,不然会报错(因为我的vscode版本低可能)。

2.Dev Containers使用方法

安装完成后如下

在另一个窗口中连接进入容器

如果你想要改变进入容器的目录

修改目录,重新进入容器便可。

四、结果展示

随便改了一下文件的内容,发现Modify时间都变成最新的了,此时可以正常编译。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐