ubuntu 18.04 cmake 中库的使用

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


前言

思考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的方法有几种: 1. 通过.sh文件安装: 在终端中运行以下命令: sudo sh cmake-3.22.3-linux-x86_64.sh --prefix=/usr/local --exclude-subdir 这将以.sh文件的方式安装CMake。 2. 通过apt-get方式安装: 在终端中运行以下命令: sudo apt-get install cmake 这将使用apt-get命令从Ubuntu官方仓安装CMake。 3. 通过源代码方式安装: 下载CMake的源代码包,可以通过以下命令下载: wget https://github.com/Kitware/CMake/releases/download/v3.22.3/cmake-3.22.3.tar.gz 解压下载的源代码包: tar -zxvf cmake-3.22.3.tar.gz 进入解压后的CMake源代码目录并执行bootstrap脚本: cd cmake-3.22.3 ./bootstrap --parallel=32 执行make命令编译CMake: make -j32 执行make install命令安装CMake: make install -j32 创建CMake软链接: ln -s /usr/local/bin/cmake /usr/bin/cmake 通过cmake --version命令查看CMake版本。 如需卸载CMake,可以运行以下命令: sudo apt-get autoremove cmake 以上是在Ubuntu 18.04中安装和卸载CMake的步骤。以上步骤参考了中的安装和卸载方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ubuntu18.04下--CMake教程](https://blog.csdn.net/ch_ccc/article/details/123375901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [在Ubuntu18.04下的Cmake使用记录](https://blog.csdn.net/m0_37957160/article/details/113179076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值