前言
思考1: 库的本质是什么?
在一个C++工程中,并不是所有代码都会编译成可执行文件。只有带有main函数的文件才会生成可执行程序。而另一些代码,我们只想把它们打包成一个东西,供其他程序调用这个东西叫作库(Libray),实际上也可以看作一个压缩包(里面是编译好的二进制函数)。
库分为静态库和动态库,分别以 .a 和 .so为后缀名。
区别:静态库每次被调用,都会生成一个副本,而共享库则只有一个副本。
一、如何创建一个库?
库 应包含 对应的头文件和库文件
头文件:C++头文件的作用
例如:c++语言环境下 创建库和头文件
创建库文件
1.可创建一个 XXX.cpp文件(没有main 函数,即这个库中没有可执行文件)
2.在CMaKeList.txt 中添加
add_library(库名字 XXX.cpp ) #生成静态库 ,
或
add_library(库名字 SHARED XXX.cpp ) #生成共享库
*函数 add_library 生成静态库 *
1)add_library(库名字 XXX.cpp ) 生成静态库 .a
2)add_library(库名字 SHARED XXX.cpp) 生成共享库 .os
告诉cmake 把这个文件编译成库。
创建头文件
1.可创建一个 XXX.h文件
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误
// 打印一句hello的函数
void printHello();
#endif

二、如何利用 cmake 调用一个库?
用头文件和库文件调用
操作如下:
1.在CMakeLists.txt 中添加可执行程序的生成命令,
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable(helloSLAM helloSLAM.cpp)
add_executable(useHello useHello.cpp)
2.在CMakeLists.txt 中链接到刚才使用的库
#target_link_libraries( 程序文件名 库名字 )
#将执行程序链接到库文件
target_link_libraries( useHello hello_shared )
`

本文介绍了在Ubuntu 18.04上如何使用CMake创建和调用C++库,包括静态库和动态库的创建过程,以及如何通过头文件和库文件在CMakeLists.txt中链接和调用这些库。
1324

被折叠的 条评论
为什么被折叠?



