• SLAM学习——开启cmake的第一个项目


    前言

    老样子,同样的,还是为了记录自己的学习过程,鄙人以前做深度学习的,主要使用Python,最近由于工作需要使用C++各种库,所以记录一下自己使用Cmake编译代码的过程。
    在这里插入图片描述

    1. 项目结构

    1.1 文件存放结构


    .
    |—— CMakeLists.txt
    |—— example // 存放例子代码
    |── include // 存放 比如宏,结构定义,函数定义,类型定义
    	|—— *.h
    |—— lib // 存放编译时产生的链接库
    |── src // 存放源文件
        |── CMakeLists.txt
        └── *.cpp
    |—— main.cpp
    .
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1.2 文件路径解释

    cmake编译的文件结构一般相对固定,大家可以模仿,创建自己的文件结构,简单解释一下:

    1. src文件夹,一般存放*.cpp文件类型。
    2. lib文件夹,一般存放编译过程中产生的动态链接库。
    3. include文件夹,一般存放*.h文件。
    4. example文件夹,一般存放演示代码。

    2. CMakeLists.txt

    2.1 CMakeLists.txt文件格式

    cmake_minimum_required(VERSION 3.23)
    
    project(visualizeGeometry)
    
    set(CMAKE_CXX_STANDARD 14)
    
    set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
    
    add_executable(visualizeGeometry main.cpp)
    
    find_package(Pangolin REQUIRED)
    
    include_directories(${Pangolin_INCLUDE_DIRS}) // 头文件在该路径下
    
    target_link_libraries(visualizeGeometry ${Pangolin_LIBREARIES})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.2 命令介绍

    cmake_minimum_required(VERSION 3.23):最低版本需要,根据自己安装的版本来,必须有的。

    set(CMAKE_CXX_STANDARD 14):使用的C++标准,可以不用设置。

    project(visualizeGeometry):项目名称。

    add_executable(visualizeGeometry main.cpp):文件执行输出。

    set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib):设置库文件输出到代码源路径下的lib文件夹中。

    find_package(Pangolin REQUIRED):找Pangolin的库,REQUIRED表示必须用到该库,没有就报错。

    include_directories(${Pangolin_INCLUDE_DIRS}):将找到的库路径传到当前文件路径里面。

    target_link_libraries(visualizeGeometry ${Pangolin_LIBREARIES}):连接这个库到目标文件取,find_package, include_directories,target_link_libraries 这三个一般配套使用。

    add_library:源文件打包成动态库和静态库,第一个参数就是生成库的名字,第二个参数是生成库的类型。

  • 相关阅读:
    【C#】编写自定义特性与其应用
    20+个很棒的 Python 脚本的集合(迷你项目)
    阿里云物联网平台
    NSS [HNCTF 2022 Week1]Challenge__rce
    SQL数据库性能优化
    js学习笔记
    Matlab|模拟电动汽车的充放电【充电顺序,波动发电,电池缓冲】
    mac安装maven后mvn命令可用,一段时间后又遇到zsh: command not found: mvn的问题
    二叉树(python)
    使用POI生成Excel下拉框
  • 原文地址:https://blog.csdn.net/CharmsLUO/article/details/126691397