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

        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(没有Edit Configurations(JSON)以及有错误但不标红波浪线怎么办?)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文档中写的就是大写,所以我们也要写大写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401500.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化解决 reCAPTCHA v2:CapSolver 教程

对于那些经常进行网页爬取的人来说,你是否曾觉得 reCAPTCHA v2 就像是互联网版的过于严格的裁判员,总是在质疑你的真实性?但如果你能够轻松且合规地与这些裁判员达成和解,使你的网络搜索和自动化任务变得更顺畅,那该有…

k8s部署kubeadm init初始化不成功,coredns处于pending,master和nodes处于notready状态

声明:本文仅为个人学习笔记使用,解决方法参考原文: https://blog.csdn.net/Harry_mumu/article/details/132099876 在部署完k8s集群后,节点一直处于notready状态(master和nodes) 查看kubectl get pods -n…

全球海事航行通告解析辅助决策系统

“全球海事航行通告解析辅助决策系统”是一个针对海事行业设计的智能系统,旨在帮助海上导航和航运操作人员解析和应对全球发布的海事航行通告。 要做这样的系统我们必须要了解海事签派员的日常工作。 海事签派员,也称为船舶操作员或船运调度员&#xff0…

HanLP分词的使用与注意事项

1 概述 HanLP是一个自然语言处理工具包&#xff0c;它提供的主要功能如下&#xff1a; 分词转化为拼音繁转简、简转繁提取关键词提取短语提取词语自动摘要依存文法分析 下面将介绍其分词功能的使用。 2 依赖 下面是依赖的jar包。 <dependency><groupId>com.ha…

替代进程注入的新工具

目录 前言 Windows Session 的利用 Windows Session 介绍 跨会话激活技术 什么是跨会话激活机制&#xff1f; 常见的跨会话激活技术 结合利用 地址 前言 众所周知&#xff0c;常用的C2工具&#xff08;例如CobaltStrike&#xff09;在另一个进程上下文中执行代码经常使…

【Android】不同系统版本获取设备MAC地址

【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中&#xff0c;想要获取MAC地址&#xff0c;最开始想到的就是WifiManager&#xff0c;但结果始终返回02:00:00:00:00:00&#xff0c;由于用得是wifi &#xff0c;考虑是不是因为用得网线的原因&#xff0c;但…

Fultter项目中IOS打包问题整理(附带解决方案)

Fultter项目中IOS打包问题整理&#xff08;附带解决方案&#xff09; 问题一&#xff1a;CocoaPods 在你的项目中找不到名为 AlicloudPush 版本为 ~> 1.9.1 的 Pod 规范。报错信息问题分析解决方法 问题二&#xff1a;ruby版本问题报错信息问题分析问题原因解决方法 问题三&…

WPS真题题库导入刷题小程序:个人使用经验分享

这篇文章的诞生&#xff0c;是因为我即将踏上一场超级有趣的挑战——备考全国计算机等级二级WPS Office高级应用与设计的冒险之旅&#xff01; WPS的分值&#xff1a; 单项选择题20分(含公共基础知识部分10分)。 WPS处理文字文档操作题30分。 WPS处理电子表格操作题30分。 …

挑战程序设计竞赛c++(第一天)1.抽签(枚举,二分法查找)2.三角形(暴力枚举)

方法一&#xff1a; #include<iostream> #include<algorithm> #include<vector>using namespace std; char flag0; int n0; int m0; int shu[1000]{0}; int i; int main() {cin >> n;cin >> m;for (i0;i<n;i){cin >> shu[i];}vector&l…

Design Compiler——综合及debug流程

文章目录 前言一、什么是综合&#xff1f;二、综合的流程1. Develop HDL files2. Specify libraries3. Read design4. Define design environment5. Set design constraints6. Select compile strategy7. Synthesize and optimize the design8. Analyze and resolve design pro…

idea 中的properties文件中文乱码

如遇到以下类似的问题&#xff1a; 配置setting中-》Editor-》File Encodings 中&#xff0c;将以下三处位置的编码格式进行修改 Global Encoding GBK Project Encoding GBK Default encoding for properties files UTF-8 修改之后文件的中文显示正常

老友记台词 第一季 第十四集 Friends 114(全英版)

文章目录 V114 The One With the Candy Hearts[Scene: Central Perk, Ross is eyeing a beautiful woman at the counter, and Joey and Chandler are egging him on to go talk to her. No pun intended. I mean it.][Scene: Central Perk, Monica, Rachel, Phoebe, Joey, Cha…

从源码到应用:医疗陪诊系统与在线问诊小程序开发详解

在数字化医疗时代&#xff0c;医疗陪诊系统与在线问诊小程序的开发成为了医疗机构和技术公司关注的焦点。接下来&#xff0c;小编将与您一同深入了解。 一、医疗陪诊系统的核心功能 医疗陪诊系统旨在为患者提供更贴心的医疗服务&#xff0c;通过专业人员陪同患者完成就医过程。…

【C语言篇】C语言常考及易错题整理DAY1

文章目录 C语言常考及易错题整理选择题全局、局部和静态变量#define与typedef转义字符操作符循环其他 编程题计算日期到天数转换柯尼希定理旋转数组的最小数字描述错误的集合整数转换密码检查 C语言常考及易错题整理 选择题 全局、局部和静态变量 执行下面程序&#xff0c;正…

[000-01-030].第3节 :搭建Zookeeper集群环境

1.搭建Zookeeper集群环境 1.1.集群安装&#xff1a; a.集群规划&#xff1a; 在 hadoop103(192.168.2.3)、hadoop104(192.168.2.4) 和 hadoop105&#xff08;(192.168.2.5&#xff09; 三个节点上都部署 Zookeeper b.解压安装&#xff1a; 1.下载zookeeper压缩版本&#x…

微软披露Office最新零日漏洞,可能导致数据泄露

近日&#xff0c;微软披露了 Office 中一个未修补的零日漏洞&#xff0c;如果被成功利用&#xff0c;可能导致敏感信息在未经授权的情况下泄露给恶意行为者。 该漏洞被追踪为 CVE-2024-38200&#xff08;CVSS 得分&#xff1a;7.5&#xff09;&#xff0c;被描述为一个欺骗漏洞…

AI安全-文生图

1 需求 2 接口 3 示例 大模型图像安全风险探析 - 先知社区 前言 文生图模型是一种新兴的人工智能技术,它通过对大规模文本数据的学习,能够生成逼真的图像。这种模型包含两个主要组件:一个文本编码器和一个图像生成器。 文本编码器接收文本输入,并将其转换为一种数字化的表示…

Allegro如何更改过孔的网络

Allegro如何更改过孔网络 在用Allegro进行PCB设计过程中,有时候需要改变过孔的网络。 如果用删除再重新打过孔的方式就显的比较慢;这时如果使用skill操作就可以大大提高PCB设计的效率。 下面介绍具体操作方法: (1)首先点击属性查看过孔的网络,此时过孔网络为DGND。如下…

【Python-办公自动化】1秒比较出2张表格之间的不同并标黄加粗

欢迎来到"花花 Show Python"&#xff0c;一名热爱编程和分享知识的技术博主。在这里&#xff0c;我将与您一同探索Python的奥秘&#xff0c;分享编程技巧、项目实践和学习心得。无论您是编程新手还是资深开发者&#xff0c;都能在这里找到有价值的信息和灵感。 自我介…

Raspberry Pi Pico 家族的进化 —— RP2040、RP2350与RP2354性能比较

随着树莓派Pico系列的不断扩展&#xff0c;其背后的芯片也得到了升级和改进。从最初的RP2040到最新的RP2354&#xff0c;每一次迭代都带来了新的功能和性能提升。本文将详细对比RP2040、RP2350和RP2354三款芯片的关键特性&#xff0c;帮助开发者了解它们的差异&#xff0c;并选…