首页 > 其他分享 >基础部分

基础部分

时间:2024-07-03 22:59:34浏览次数:1  
标签:target package Pangolin 路径 基础 link 部分 find

前言

ORBSLAM2和ORBSLAM3注释版github链接https://github.com/electech6

SLAM基础

由于已经看过SLAM14讲,故删繁就简,看一部份

CMAKE相关

指令

常用的比较重要的指令

# 指定要求最小的CMake版本,
cmake_minimum_required(VERSION 3.10)

# 设置当前项目名称
project(test)

# 指定头文件搜索路径,方便编译器找到头文件
include_directories(

)

# 设置用变量替换值
set(variable value)

# 用指定的源文件为工程添加可执行文件
add_executable(hello main.cpp)

# 将指定的源文件生成链接库文件, STATIC表示静态链接库, SHARED表示动态链接库
add_library(libname STATIC/SHARED sources)

# 为库或二进制文件添加链接库
target_link_libraries(target library1 library2...)

# 向当前工程中添加文件的子目录,目录可以是相对路径或绝对路径
add_subdirectory(source_dir)

# 遍历目录下的所有源文件
aux_source_directory(dir varname)

# 打印信息
message(mode "message text")
# mode 包括 STATUS、WARNING、ERROR、FATAL_ERROR、SEND_ERROR、

# 搜索第三方库
find_package(packageName version EXACT/QUIET/REQUIRED)
# 后面是三个参数,EXACT表示精确匹配,QUIET表示不输出任何信息,REQUIRED表示如果没有找到,则报错
# 当find_package 找到一个库时,以下变量会自动初始化,NAME 表示库的名字
# <NAME>_FOUND 显示是否找到库的标记
# <NAME>_INCLUDE_DIRS 包含库的头文件路径  或  <NAME>_INCLUDES
# <NAME>_LIBRARIES 包含库的链接库路径  或  <NAME>_LIBS

# 列表操作(读,搜索,修改,排序)
list()
# 追加例子:LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

# 条件语句
if elseif endif
# 循环语句
foreach()  endforeach()

Cmake 中一些常用的、预定义的变量如下

PROJECT_NAME:		工程名称,替代project(name)中的name
PROJECT_SOURCE_DIR:	工程路径,通常是包含project指令的CMakeLists.txt文件所在的路径
EXECUTABLE_OUTPUT_PATH:可执行文件输出路径
LIBRARY_OUTPUT_PATH:	库文件输出路径
CMAKE_BINARY_DIR:		默认是 build 文件夹所在的绝对路径
CMAKE_SOURCE_DIR:		源文件所在的绝对路径

使用find_package指令,自动查询package安装位置,方便别人移植。

#在使用 find_package 指令的情况下自动指定路径
#,查找计算机中已经安装的 Pangolin 库
find_package(Pangolin REOUIRED)
#自动将找到的 Pangolin 库中头文件的路径添加到工程中include_directories(S{Pangolin_INCLUDE_DIRS})
include_directories(S{Pangolin_INCLUDE_DIRS})
#自动将找到的 Pangolin 库文件链接到工程中target_link_libraries(mydemo ${Pangolin_LIBRARIES} )
target_link_libraries(mydemo ${Pangolin_LIBRARIES} )

注意事项

  • CMake 指令不区分大小写
  • 参数和变量名称,,严格区分大小写,引用变量的形式为${ }。
    • 可以这样搞,set命名一变量,包含多个路径。然后target_link_libraries直接link这里

管理方法

两种方法管理

  • 工程存在多个目录,只使用一个 CMakeLists.txt 文件来管理
    • 中央集权型,
  • 工程存在多个目录,每一个源文件目录都使用一个CMakeLists.txt 文件来管理
    • 区域自治型,

标签:target,package,Pangolin,路径,基础,link,部分,find
From: https://www.cnblogs.com/WMAAA/p/18282712

相关文章

  • 【python基础】print函数的基础使用以及进阶
    一、print函数的基本使用print函数是Python中最基本的输出函数,用于将信息打印到控制台,是学习python、调试代码必不可少的函数我们首先看一下python函数的基本语法结构:>>>help(print)Helponbuilt-infunctionprintinmodulebuiltins:print(...)print(value,...,......
  • #C语言基础 笔记三
     指针和数组直接访问:按变量的地址存取变量的值(通过数组名访问)间接访问:通过存放变量的地址的变量去访问元素(通过指针访问)1.指针和一维数组inta[5]={1,2,3,4,5};int*p=a;直接访问:inta[5]={5,4,3,2,1};int*p=a;printf("%p%p%p\n",......
  • 【机器学习算法基础】(基础机器学习课程)-07-朴素贝叶斯算法-笔记
    一、朴素贝叶斯算法原理        朴素贝叶斯(NaiveBayes)是一种基于贝叶斯定理的简单而强大的分类算法,尤其适用于文本分类问题,如垃圾邮件检测、情感分析等            二、朴素贝叶斯算法对新闻进行分类案例  1.数据准备假设......
  • 木舟0基础学习Java的第九天
    面向对象OOPfinal(最终的):用final修饰的所以变量名必须大写修饰类:类不能被继承修饰变量:变量就变成了常量只能被赋值一次修饰方法:方法不能被重写多态(polymorphic)多态的前提:         1.有继承关系         2.有方法重写//在多态中编......
  • Python学习笔记27:进阶篇(十六)常见标准库使用之质量控制中的代码质量与风格第一部分
    前言本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。根据模块知识,一次讲解单个或者多个模块的内容。教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html质量控制质量控制(QualityControl,QC),主要关注于提高......
  • Web安全基础学习:Python反序列化漏洞之pickle反序列化
    理论基础序列化与反序列化序列化和反序列化是指用于将对象或数据结构转换为字节流的过程,以便在不同系统之间进行传输或存储,并在需要时重新构造。序列化是指将对象或数据结构转换为字节流的过程。在序列化过程中,对象的状态和数据被转换为一系列字节,这些字节可以按照一定......
  • 【Java基础】--线程(包含面试题)
    本章主要了解什么是进程?进程和线程有什么关系?有什么区别?以及创建线程的方式有哪些?1.什么是进程?简单的来说,进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存。2.什么是线程?线程,又称轻量级进程(LightWeightProcess)。......
  • 【Java基础】——反射
    1.什么是反射反射是指在程序运行时能够访问、检查和修改自身状态或行为的能力。通过反射,程序可以动态地获取类的信息、调用类的方法,并修改类的属性。再简单点来说,反射就是类在运行期间,把类中成员抽取为其他类的过程就是反射。2.为什么使用反射(面试常问)关于这个问题,如果按照......
  • 在delphi用移动鼠标左键配合shift的方法选择部分文字
    procedureTForm1.ButtonPen1Click(Sender:TObject);beginSetCursorPos(694,352);//设置开始的位置。Sleep(300);//mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);//模拟按下鼠标右键。//mouse_event(MOUSEEVENTF_RIGHTUP,0,......
  • c语言基础3
    [1]运算符1.1逻辑运算符&&逻辑与:全真则真,一假则假||逻辑或:一真则真,全假则假!逻辑非:非真则假,非假则真0为假1为真printf("%d\n",2>3);//0printf("%d\n",22>3);//1printf("%d\n",12>3&&8<6);//0printf("%d\n",12>3||8<......