适合C++入门的新手项目《mytinySTL》解读

这是网上极力推荐的C++项目,项目的github网址https://github.com/Alinshans/MyTinySTL,具体的操作参考项目原网址。

一 cmake,make

在初次执行该项目时,发现使用了cmake以及make工具,故查阅了相关解读。参考为什么要用make?为什么要用cmake?Linux源码编译的一般流程?_LoveMIss-Y的博客-CSDN博客_为什么现在都用cmake

1.gcc编辑器:

gcc编译器可以编译C,C++等语言。当你的程序只有一个源文件时,直接就可以用gcc命令编译它。但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大。因为各个文件之间还涉及到互相访问与链接,错综复杂的关系一个一个处理很麻烦,很容易出错,素衣需要一个工具来制定一个很好的编译规则。

2.make工具

可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能。而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。总结来说,就是批量读取makefile文件并按其中命令执行。

3.makefile文件

makefile文件包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。然而当工程非常大时,手写makefile非常麻烦,换平台又要重新修改。这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件。可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。

4.Cmake

cmake根据什么生成makefile?首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,根据这个文件生成makefile。当然CMakeLists.txt文件是自己手写的。

具体流程图,参考https://yangyongli.blog.csdn.net/article/details/122053959

 

二 源码结构分析

1.项目的主要部分在MyTinySTL以及Test文件夹。

MyTinySTL主要包括了各种基础算法,各种容器vector,list,map,迭代器等源码这里列出list.h以及vector.h文件对比:

均先申明的mystl的基本结构,然后对不同容器的操作算法实现,比如vector的复制,移动,插入等。当然每个文件都有类似的开头,相应的目的也在如下图片中:

2. Test文件

Test文件夹主函数为test.cpp并包含要编译测试了各种代码,比如list_test.h,vector_test.h。这里先解释list_test.h与MyTinySTL的list.h关系。

 可以看出,这里导入了MyTinySTL/list.h以及Test/test.h。tesh.h封装了单个测试案例和批量测试等操作,用以测试通过的准确性。下图中的1,申明了list.h中的变量以及操作,步骤2则将申明的变量或者操作后的变量进行测试。

test.pp直接调用list_test()。

 

 三 编译测试

理解源码的大概结构后,那么代码如何对Test的文件进行编译生成可执行文件??

1.首先,看根目录下的CMakelists。这里进行了一些基础的编译设置,比如项目名称,项目版本,编译器的选择等。最后还添加的子文件编译。

 

 通知添加子文件,可以进一步的编译我们所需要执行的test.cpp文件,进一步到了子文件的CMakelists。

执行即可。执行结果如下:

 

 暂时理解这么多,有更深理解后续补充。

 

 

 

 

 

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值