当前位置: 首页 > article >正文

cmake学习笔记

最近在学cmake的用法,参考了cmake使用详细教程(日常使用这一篇就足够了)这篇文章,这篇文章讲的很仔细,下面记录自己的学习过程。

1、系统以及开发工具

一开始想通过虚拟机安装Ubuntu和vscode,后面想到了之前本机Windows安装过wsl,wsl的就是Ubuntu,在wsl+本地vscode的开发下,很快就把文章提到的几个demo实现了,也对cmake有了进一步的了解。

2、cmake简单配置

image

image

image

在项目的当前目录输入cmake .,输出如下结果:
 

image


接着输入 cmake,输出如下结果
 

image


最后执行二进制文件./hello

image

3、cmake配置多个头文件以及源文件路径

Demo2有多个头文件路径,以及多个源文件路径如何配置,这个和vs的vc++配置头文件和源路径是一样的,新加了一个build目录,在这个目录里面执行cmake .. ,cmake 后面的.. 是CMakeLists.txt所在的目录,cmake找到CMakeLists.txt生成项目文件

image

4、cmake配置生成类库

Demo3没用main函数,是用来做一个给其他项目调用的类库,可以生成静态库和动态库,c++静态库是和二进制打包到一起去了,动态库是独立的一个so文件。根据自己情况是需要静态库还是动态库。

image

5、cmake配置使用类库

假设Demo3封装了一个自己需要的函数,那么就需要在其他项目使用该函数,Demo4通过cmake的配置文件来使用该库

image

5.1 使用静态库

image

我们编译完以后可以通过ldd hello查看依赖库发现并没有libmyfunc.a,但是该二进制文件是可以执行的。

image

这个查看hello二进制文件的大小16640字节

image

5.2 使用动态库

image

我们编译完通过ldd hello查看发现有依赖libmyfunc.so

image

查看hello的文件大小16608字节,说明比静态文件的小,引用静态库文件较大是因为hello包含了libmyfunc.a,动态库则没有包含,通过环境变量去找该依赖库,找打了则可以运行,找不到就会报错。

image


http://www.kler.cn/a/373077.html

相关文章:

  • 对话瀚荃:为何欧美拟统一采用USB-C充电接口?
  • ElasticSearch备考 -- Index rollover
  • Android 10.0 根据包名禁用某个app的home事件
  • 社区交流系统设计与实现
  • 关于深度学习方向学习的一些建议
  • 大模型面试题63题(1-11)
  • 什么是目标检测?
  • P1037 [NOIP2002 普及组] 产生数
  • Mybatis-18.动态SQL-sqlinclude
  • 【从零开始的LeetCode-算法】3216. 交换后字典序最小的字符串
  • MaskGCT,零样本语音克隆,TTS语音合成,多语言支持(WIN/MAC)
  • mac|maven项目在idea中连接redis
  • 智能合约分享
  • CSS浮雕效果
  • C++: String容器的使用和实现
  • 【MySQL】日志
  • QT中使用图表之QChart概述
  • 排查公网NAT网关中高流量ECS实例
  • 想要分离人声,来试试看这几个方法
  • 使用PE工具箱进行系统安装
  • 企业新闻及产品宣传稿怎么写?有哪些商业财经类报纸杂志或媒体发布?
  • 串口扫盲TTL,TX/TR/GND
  • 统计数据集的TXT、XML及JSON标注文件中各类别/每个标签的数量
  • threejs开源实例-粒子地球
  • ElasticSearch 入门需要了解的概念
  • 【模型学习之路】手写+分析Transformer