开启cmake的第一个项目
前言
老样子,同样的,还是为了记录自己的学习过程,鄙人以前做深度学习的,主要使用Python,最近由于工作需要使用C++各种库,所以记录一下自己使用Cmake编译代码的过程。
1. 项目结构
1.1 文件存放结构
.
|—— CMakeLists.txt
|—— example // 存放例子代码
|── include // 存放 比如宏,结构定义,函数定义,类型定义
|—— *.h
|—— lib // 存放编译时产生的链接库
|── src // 存放源文件
|── CMakeLists.txt
└── *.cpp
|—— main.cpp
.
1.2 文件路径解释
cmake编译的文件结构一般相对固定,大家可以模仿,创建自己的文件结构,简单解释一下:
src
文件夹,一般存放*.cpp
文件类型。lib
文件夹,一般存放编译过程中产生的动态链接库。include
文件夹,一般存放*.h
文件。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})
:将找到的库路径传到当前文件路径里面。
扫描二维码关注公众号,回复:
15136294 查看本文章
target_link_libraries(visualizeGeometry ${Pangolin_LIBREARIES}):
连接这个库到目标文件取,find_package, include_directories,target_link_libraries
这三个一般配套使用。
add_library
:源文件打包成动态库和静态库,第一个参数就是生成库的名字,第二个参数是生成库的类型。