首页 > 系统相关 >视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库

视觉SLAM ch3补充——在Linux中配置VScode以及CMakeLists如何添加Eigen库

时间:2024-08-14 20:52:41浏览次数:10  
标签:CMakeLists Eigen package xxx ch3 安装 find

        ch3中的所有代码,除了在kdevelop中运行,还可以在VScode中运行。下面将简要演示配置过程,代码不再做解答,详细内容在下面的文章中。(这一节中的pangolin由于安装过程中会出现很多问题,且后续内容用不到该平台,所以暂时不进行安装)

视觉SLAM ch3—三维空间的刚体运动icon-default.png?t=N7T8https://blog.csdn.net/Johaden/article/details/141023487

        其次,我之前的文件推荐了一些软件可以下载,在看下面文章之前,需要至少安装VScode以及git等。 

git等常用工具以及cmakeicon-default.png?t=N7T8https://blog.csdn.net/Johaden/article/details/140715733

下载vscode时会遇到很多问题,可以按照下面的博客逐步下载

ubuntu 20.04系统下安装VSCode(配置C/C++开发环境)icon-default.png?t=N7T8https://www.cnblogs.com/icmzn/p/16244665.html 

一、基本插件

        将命令用不同颜色显示以及tab自动补全。

ROS现在暂时用不上,需要的时候再安也行。(建议先不安,拓展安多了容易冲突) 

重点:没有Edit Configurations(JSON)怎么办!?

        其实这一步是第二部分中需要用到的,但是我在这一步后面卡了两天,现在大家可以现在就自检一下,按ctrl+shift+p后有没有红框内的选项卡,我的刚开始就是没有。

        如果你也很不幸,没有这个选项的话(其实C/C++开头的有很多,如果你只有七八个,那肯定就是出问题了),我的建议是不要看网上的别的资源了,因为我看了两天,也实践了两天。无论怎么调整文件、设置都是徒劳的。究其根本就是安装的时候没安好。只能重装了,其实很好装,就是找到这条路的过程是艰辛的。

        重装成功之后我也发了一篇博客,链接放在下面了:

在Ubuntu中彻底删除Vscode(重装VScode)icon-default.png?t=N7T8https://blog.csdn.net/Johaden/article/details/141193093        重装之后需要重新安拓展 

二、includePath配置

在使用vscode调库的时候,即使我们有头文件,但是总会出现报错,如下图。

 以ch3为例,在ch3中打开终端后输入code .命令后,弹出vscode。

        当打开后eigen头文件标红该怎么办?

 1.没装过eigen需要自装eigen

sudo apt-get install libeigen3-dev

2.方法一:自动修复

  方法二:

(1)ctrl+shift+p,选择C++:Edit Configurations(JSON)

(2)添加库所在位置(使用locate命令查询在哪)

初次使用lacate可能需要安装:

sudo apt install mlocate

        我们发现当输入locate core的时候,输出了很多个答案,我们也不知道哪个是,所以结合使用grep命令(初次需要安装)

 所以我们就知道他们的路径了,也就是/uer/include/engen3/,然后复制下来加在配置文件里。

保存后,原来的cpp文件报错消失

        有的时候,/usr/include下面的文件不只是有Eigen,所以如果我们不只是用到了eigen的话,我们只需要使用通配符即可,如下。 (搜索可能比较慢,但是不太容易报错)

三、嵌入式终端

打开需要按ctrl+·,键位图如下

我们可以在里面通过cmake命令生成可执行文件。

 (如果你没有build,那就要mkdir build,然后再进去)

注意:其他功能,比如SSH、Debug都是需要配置的,比较麻烦。未必一定要追求在IDE里运行程序,在写一个大型项目或调试时,一般可以采用直接cout该变量的方式来看该值发生了怎样的变化,调试需要配置的过程非常困难(cmakelist、编译器、setting等)。除非安装一些插件,比如cmake tools,无需配置,直接点击窗口下面的“bug虫”的按钮就行,不做过多介绍。

        还有就是删目录的时候,一般都在build下面输入rm -rf  *,这个就可以删除全部内容(当然直接在可视化界面删除build文件夹也可以)。但是,用上面命令的时候一定要注意,不要写成rm -rf /*,这会把根目录全删除!!一定要注意!!

四、知识点补充:CMakeLists如何添加Eigen库

        以该处的代码为例,我们不知道它的“包”,也就是动态库在哪里,这时候我们就可以使用find_package(xxx),如果找到了,会返回两个东西,也就是头文件“include_directories(${xxx_INCLUDE_DIRS})”和动态库静态库“target_link_libraries(xxx_LIBRARIES})”

(PS:find_package(xxx)中的xxx必须和xxx.config.cmake中的xxx对应上)

比如之前上一节的代码可以这样写:

我们怎么知道那个xxx是什么?也就是为什么要写Eigen3?

(1)locate xxx   -> include_directories(“路径”)

(2)find_package(xxx):

①REQUIRED:

  find_package(xxx REQUIRED) 时,CMake 将尝试定位名为 xxx 的包,并且如果找不到该包,则构建过程将失败,cmake过程会终止,并显示一条错误信息说明缺少所需的包。这确保了在没有正确安装或配置所需依赖项的情况下,不会尝试编译项目,从而避免了潜在的构建失败或运行时错误。

        如果不使用 REQUIRED 关键字,即使用 find_package(xxx) ,那么 CMake 会尝试查找包,但如果找不到,它不会终止构建过程,而是简单地继续下去,就像没有找到这个包一样。在这种情况下,你的项目可能需要在运行时动态检查是否存在这些库,或者实现一些替代逻辑来处理缺失的依赖。

locate xxx | grep 如cmake,就是要找出xxx 相关的 CMake 配置文件。

        只要找到类似于这个红框的格式,就代表它可以被Eigen找得到。而xxx代表的是Config前面的那个,也就是Eigen3。所以就得到了xxx的格式。

        还有,{}里面的是大小写呢?如下,文档中怎么写,这就这么写。

gedit 上面的路径

         如上图,Eigen文档中写的就是大写,所以我们也要写大写。

标签:CMakeLists,Eigen,package,xxx,ch3,安装,find
From: https://blog.csdn.net/Johaden/article/details/140828790

相关文章

  • CH340一键下载电路
    单片机串口一键下载方案一、概述CH340X/N/K/CH343/CH342等USB转串口芯片可实现不同类型MCU串口一键下载功能,对于支持多模式启动的STM32Fxxx/CH32Fxxx/CH32Vxxx等系列、ESP系列等MCU,使用CH340X、CH343和CH342芯片时无需外围三极管等逻辑控制电路,将芯片提供的输出信号脚直连M......
  • ESP8266通过CH340驱动板无法识别问题
    官方文档接线图,按照接线就行,电阻用10K,当时没有找到10K的我用的11K的也能用。1.RST、EN用上拉电阻接到3.3V2.VCC用3.3V供电3.GND、GPIO15接地就行4.TX、RX连接串口的RX、TX交叉连接就行还有,官方文档提示:尽量不要使用USB转TTL的3.3V或5V供电。建议使用2节干电池或......
  • 求助!C++使用Eigen求多项式根报错访问冲突
    本地环境:VS2022安装的NuGet包:Eigen版本3.3.9配置MKL头文件相关代码#include<cmath>#include<math.h>#include<stddef.h>#include<stdlib.h>#include<string.h>voidComputeTest();源文件相关代码#defineEIGEN_USE_MKL_ALL#defineEIGEN_VECTORIZ......
  • Linux安装Eigen 3
    下载下载地址gitclone下载到本地安装打开下载路径mkdirbuildcdbuildcmake..sudomakeinstall安装后文件路径usr/local/include/eigen3测试vimeigentest.cpp#include<iostream>#include<eigen3/Eigen/Dense>usingEigen::MatrixXd;intmain(){ Matrix......
  • 【C++】利用Eigen库实现弹道计算,并输出弹道轨迹
    利用Eigen库实现弹道计算,并输出弹道轨迹代码弹道知识简介:**弹道导弹**是指在火箭发动机推力作用下按预定程序飞行,关机后按自由抛物体轨迹飞行的导弹。其飞行弹道一般分为主动段和被动段:主动段(又称动力飞行段或助推段)是导弹在火箭发动机推力和制导系统作用下,从发射点......
  • CH32V系列MCU:关于将“变量”放在FLASH某一位置方法
    以CH32V307为例,配置方法如下: 关于给定义的变量赋值,注意要通过FLASH编程操作写入,将值写入FLASH该位置。完成后可直接通过读取该变量获取该值。如下图: 配置代码如下:/**********************************(C)COPYRIGHT********************************FileName......
  • CMakeLists.txt编写思路
      近期在linux编写CMakeLists.txt文件,整理了一些思路。一、编写CMakeLists.txt的基本步骤和思路:初始化CMake:使用cmake_minimum_required指令指定CMake的最小版本要求,以确保兼容性。使用project指令定义项目名称和可选的语言。设置变量:使用set指令设置项目相关的变量,......
  • C_THQ_ch3
    //用函数printf()输出数据,函数scanf()输入数据//必须指定输入输出数据的格式,不同类型的数据指定不同的格式//初学不必深究,重点掌握常用规则,其他随时查表#include<stdio.h>intmain(void){inta=1,b=2;//函数printf()一般格式:printf(格式控制,输出表列)//格式控制:双撇号括起......
  • 分别使用CMAKE和CLION编译,同一个cmakelists.txt, 为什么clion出错和cmake正常?clion出
    求助!!我在github上找到了一个大型的应用软件的开源代码,使用CMAKE编译,再用VS2017以生成应用程序。因为想改代码,所以使用了CLion在本地运行。但是cmake能够正常通过的文件代码,clion却出错。用的同一个cmakelists.txt,请问为什么clion出错和cmake正常呢?求求~改动了很久cmakelist......
  • C++矩阵库:Eigen 3.4.90 中文使用文档 (一)
    写在前面:我在学习Eigen库时,没找到好的中文文档,因此萌发了汉化Eigen官网文档的想法。其中一些翻译可能不是特别准确,欢迎批评指正。感兴趣的同学可以跳转到官网查看原文:Eigen:MainPagehttps://eigen.tuxfamily.org/dox/index.html       Eigen库,是一个开源的C......