Linux下cmake编译库的方法

一,使用带main的正常cpp编译

1,创建一个cpp,HelloSLAM.cpp

#include<iostream>
using namespace std;

int main()
{
	cout << "hello slam" << endl;
	return 0;


}

2,然后在HelloSLAM.cpp相同目录下编写CMakeLists.txt,内容如下:

cmake_minimum_required (VERSION 2.8)
project (HelloSLAM)
add_executable(HelloSLAM HelloSLAM.cpp)

3,创建文件夹build,并进行编译

mkdir build
cd build
cmake ..
make

4,执行可执行程序

./HelloSLAM
 

二,linux下编译库的使用

     在一个C++的工程中,并不是所有的代码都会编译成可执行文件,只有带有main函数的文件才会生成可执行程序。而另外有一些代码,我们只想把他打包成一个东西,供其他程序的调用,这个东西叫库。库文件是一个压缩包,里面是编译好的二进制函数。

2.1 静态库的生成(.a)

1,创建一个.cpp文件,名字叫做libtest.cpp.它没有main函数,意味着这个库没有可执行文件

#include<iostream>
using namespace std;

void printHello( )
{
	cout << "hello slam" << endl;
	
}

2,编辑CMakeLists.txt文件

cmake_minimum_required (VERSION 2.8)
project (libtest)
add_library(libtest libtest.cpp)

3,执行以下语句

mkdir build
cd build
cmake ..
make

 4,这样会在build文件夹下,生成一个.a的静态库

 2.2 共享库的创建(.so)

      共享库和静态库的区别,静态库每次调用都会生成一个副本,共享库只生成一个副本。在空间节省的状况下,还是使用共享库

和上面的区别,体现在cmake的编译文件CMakeLists.txt的内容中

cmake_minimum_required (VERSION 2.8)
project (libtest)
add_library(libtest SHARED libtest.cpp)

 三,库文件的调用

     库文件是一个压缩包,里面是编译好的二进制函数。只看这个并不知道里面函数的功能,调用的形式是什么,为了让别人调用该函数我们需要提供一个头文件,让别人知道应该如何使用这个库。这样只要拿到这个头文件,就可以知道如何调用。

1,创建头文件,指明共享库中函数的功能libtest.h

#ifndef LIBTEST_H_
#define LIBTEST_H_

void printHello();

#endif

2,创建调用cpp,uselibtest.cpp

#include"libtest.h"
int main()
{
	printHello();

	return 0;
}

3,创建CMakeLists.txt文件

cmake_minimum_required (VERSION 2.8)
project (libtest)
add_library(libtest SHARED libtest.cpp)
add_executable(uselibtest uselibtest.cpp)
target_link_libraries(uselibtest libtest)

将上面的文件,和libtest.cpp.放在同一级的目录

4,执行以下语句进行编译

mkdir build
cd build
cmake ..
make

执行后的结果,如图所示: 

 5.调用执行

./uselibtest

 执行的结果如图所示:

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Linux系统下,使用CMake进行编译的指令如下: 1. 首先,你需要安装CMake。你可以从官方网站下载CMake的源代码,并进行编译安装,或者使用包管理器进行安装。 2. 下载CMake的源代码,并解压缩: ```shell wget https://github.com/Kitware/CMake/releases/download/v3.16.8/cmake-3.16.8.tar.gz tar -xzf cmake-3.16.8.tar.gz ``` 3. 进入解压缩后的目录,并创建一个build文件夹: ```shell cd cmake-3.16.8 mkdir build ``` 4. 进入build文件夹,并执行cmake命令,生成Makefile和其他构建文件: ```shell cd build cmake .. ``` 5. 执行make命令,进行编译: ```shell make ``` 通过以上步骤,你可以使用CMakeLinux系统下进行编译。这些指令会帮助你在当前目录下创建一个build文件夹,并在其中生成Makefile和其他构建文件,然后使用make命令进行编译。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [paddlepaddle-2.5.0rc1-cp37-cp37m-linux-aarch64.whl](https://download.csdn.net/download/musicsxf/87917049)[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: 33.333333333333336%"] - *2* [Linux学习笔记:使用Cmake编译](https://blog.csdn.net/dingxiaoxv/article/details/126921859)[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: 33.333333333333336%"] - *3* [linux-cmake常用指令](https://blog.csdn.net/m0_37792813/article/details/126403669)[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: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值