SLAM 14讲 ch3 使用vscode编译 基于ubuntu20.04
简述
之前一直在琢磨如何使用vscode来进行make和cmake的编译问题,使用ubuntu自带的terminal可以很轻松的编译高翔的ch3并运行,但是到了vscode里就不行。折腾了半天才搞清楚。
关于eigen3和pangolin头文件变红的问题
我发现高翔在14讲文中用的头文件是:
#include <Eigen/Core>
而这个代码在我这边是报错的,但是可以可用如下代码:
#include <eigen3/Eigen/Core>
当我正在窃喜,立马点击运行文件,发现pangolin库报错。
好的,我点开了如下几个报错的库文件,发现pangolin的包里所有带有eigen模块的声明都是#include <Eigen/Core>
我也不可能一个个去改成#include <eigen3/Eigen/Core>
于是我又想了别的方法。就是将eigen3的目录下的Eigen链接到/usr/include中
PS.其实我发现/usr/include目录下本来就有一个Eigen文件夹,里面的内容也是对的,不知道是不是Ubuntu20的bug?所以读取不出来??
关于eigen3和pangolin头文件变红修复
Eigen其代码如下:
在终端中输入
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
然后我发现pangolin的#include <pangolin/pangolin.h>
也报了红色的波浪线。
于是乎同上操作
sudo ln -s /usr/local/include/pangolin/ /usr/include/pangolin
现在准备工作基本做完了。
VScode需要用到的插件
VScode对我这个萌新来说还算友好吧,需要用到的插件有以下几个:
- C/C++
- CMake
- CMake tools
- Code runner
- Tabnine Aurocomplete AI 自动补全代码
- One Dark Pro 黑暗主题
- Chinese(Simplified)Language 中文
其中从5开始就是我个人的插件了 。
VScode编译和调试部分
在VScode中打开slambook2中的example文件夹,如图所示:
如果没有build文件夹,可以自己新建一个或者在终端的example目录下mkdir build
需要注意的是其中
string trajectory_file = "./trajectory.txt";
这个trajectory.txt的路径我设置的是相对路径。不一样的可以自己设置。
接着按图所示进行操作
编译好了以后,要修改program的目录,在launch.json中修改
"program": **"/home/liqunzhao/examples/build/plotTrajectory"***
这里要设置为自己的编译完成后的文件所在的目录!!!!!
接着进入如图所示的操作步骤:
点击1,然后根据提示配置好调试的GCC以后(我这里用的是g++10-),进行调试,出现选框提示错误,选择仍要调试!
最后的结果
思考
按我常规编译普通c++文件的思路,点击右上角编译 运行 会报一堆错误
其中编译的时候是完好的,并没有错误代码。但是直接运行就会爆一堆库文件的链接错误。
我也尝试直接在CMake里面静态链接libpangolin.so 但无卵用。
查了一下午也没有什么结果。如果知道的可以告诉我一下。
在终端里运行代码则cmake、make 都没问题,运行也没问题。
附上用终端运行的结果:
example目录下有四个文件,分别是CMakelist.txt、trajectory.txt、coordinateTransform.cpp和plotTrajectory.cpp
mkdir build
cd build
cmake ..
make -j16
cp ../trajectory.txt trajectory.txt
./plotTrajectory