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

前言

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

1. 项目结构

1.1 文件存放结构


.
|—— CMakeLists.txt
|—— example // 存放例子代码
|── include // 存放 比如宏,结构定义,函数定义,类型定义
	|—— *.h
|—— lib // 存放编译时产生的链接库
|── src // 存放源文件
    |── CMakeLists.txt
    └── *.cpp
|—— main.cpp
.

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})

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:源文件打包成动态库和静态库,第一个参数就是生成库的名字,第二个参数是生成库的类型。

猜你喜欢

转载自blog.csdn.net/CharmsLUO/article/details/126691397