slam十四讲 01 CMakeLists.txt常用语句

笔记来自高翔的《视觉SLAM十四讲

备忘

cmake_minimum_requiredcmake_minimum_required(VERSION 3.16)指定版本
projectproject(project_name)指定工程名称
add_libraryadd_library(lib_name libHelloSLAM.cpp)添加需要编译的库,hello是编译后文件名
add_executableadd_executable(ext_name helloSLAM.cpp)添加需要编译的可执行程序
SHAREDadd_library(lib_shared_name SHARED lib_hello.cpp)编译成共享库
target_link_librariestarget_link_libraries(use_ext_name hello_shared)关联可执行程序和共享库,该可执行程序使用了共享库
CMAKE_BUILD_TYPEset(CMAKE_BUILD_TYPE "Debug")开启debug模式

1 cmake编译可执行程序和库文件

可执行程序main.cpp

#include <iostream>

using namespace std;
int main(int argc, char** argv)
{
	cout << "Hellow" << endl;
	return 0;
}

库文件lib_hello.cpp

#include <iostream>

using namespace std;

void printHello()
{
	cout << "Hellow" << endl;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project(helloSLAM)

add_executable(hellowslam main.cpp)  # (生成的文件名 源代码文件)

add_library(lib_hello lib_hello.cpp)   # (生成的文件名 源代码文件)生成静态库lib_hello.a

# 生成共享库  使用关键字SHARED
add_library(lib_shared_hello SHARED lib_hello.cpp)


# 静态库每次被调用会生成一个副本,共享库则只有一个副本,更省空间。

注意:没有添加SHARED,则生成静态库,添加则生成共享库。库文件分为共享库和静态库两种,静态库以.a为后缀,共享以.so为后缀。都是一些函数打包的集合,区别在于静态库每次被调用都会生成一个副本,共享库则只有一个副本,更节省空间。

mkdir build
cd build
cmake ..   # relation
make       # call g++

2 使用编译好的库

上面生成的lib_shared_hello.so库文件是一个二进制压缩包,包含了编译好的二进制函数。为了让其他人调用,则需要提供头文件,只有有了头文件和库文件,则可以调用这个库

头文件lib_hello.h

#ifndef LIBHELLO_H_
#define LIBHELLO_H_

void printHello();

#endif

可执行文件来调用 use_hello.cpp

#include "lib_hello.h"


int main(int argc, char** argv)
{
	printHello();
	return 0;
}

CMakeLists.txt添加一个可执行程序的生成命令,链接到刚才使用的库上

add_executable(use_hello use_hello.cpp)   # 生成可执行文件use_hello
target_link_libraries(use_hello lib_shared_hello)  # 可执行文件链接到之前的库hello_shared

 如此,生成的可执行文件use_hello,便可以调用lib_shared_hello库中的代码。

./use_hello

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值