最近在学cmake的用法,参考了cmake使用详细教程(日常使用这一篇就足够了)这篇文章,这篇文章讲的很仔细,下面记录自己的学习过程。
1、系统以及开发工具
一开始想通过虚拟机安装Ubuntu和vscode,后面想到了之前本机Windows安装过wsl,wsl的就是Ubuntu,在wsl+本地vscode的开发下,很快就把文章提到的几个demo实现了,也对cmake有了进一步的了解。
2、cmake简单配置
在项目的当前目录输入cmake .
,输出如下结果:
接着输入 cmake
,输出如下结果
最后执行二进制文件./hello
3、cmake配置多个头文件以及源文件路径
Demo2有多个头文件路径,以及多个源文件路径如何配置,这个和vs的vc++配置头文件和源路径是一样的,新加了一个build目录,在这个目录里面执行cmake ..
,cmake 后面的.. 是CMakeLists.txt所在的目录,cmake找到CMakeLists.txt生成项目文件
4、cmake配置生成类库
Demo3没用main函数,是用来做一个给其他项目调用的类库,可以生成静态库和动态库,c++静态库是和二进制打包到一起去了,动态库是独立的一个so文件。根据自己情况是需要静态库还是动态库。
5、cmake配置使用类库
假设Demo3封装了一个自己需要的函数,那么就需要在其他项目使用该函数,Demo4通过cmake的配置文件来使用该库
5.1 使用静态库
我们编译完以后可以通过ldd hello查看依赖库发现并没有libmyfunc.a,但是该二进制文件是可以执行的。
这个查看hello二进制文件的大小16640字节
5.2 使用动态库
我们编译完通过ldd hello查看发现有依赖libmyfunc.so
查看hello的文件大小16608字节,说明比静态文件的小,引用静态库文件较大是因为hello包含了libmyfunc.a,动态库则没有包含,通过环境变量去找该依赖库,找打了则可以运行,找不到就会报错。