
1.make.Makefile是什么make是一个命令是工程编译自动化工具读取Makefile里的编译规则只编译改动过的文件不用再手动敲一堆gcc编译命令大幅简化多文件c/c项目编译、链接、清理、安装流程。Makefile是一个文件记录项目文件依赖关系、编译命令、清理规则的文本文件文件名固定为Makefile或makefile放在项目根目录。2.Makefile的基本结构第一行是依赖关系第二行是依赖方法第一行冒号前面的被称为目标就是你要生成的文件可执行程序、.O目标文件等...第一行冒号后面的是依赖文件列表生成目标需要的前置文件第二行注意要以tab键开头后面跟的编译方法执行命令3.Makefile基本使用以单文件为例创建一个文件 touch myproc.c myproc.c里面是代码再touch一个Makefile 现在我们的目的是编译出myproc所以现在在命令行可以make并显示编译出的myproc但是我们还需要进行清理代码所以打开Makefile vim Makefile输入.PHONY:clean .PHONY可以理解为Makefile中的修饰符.PHONY后面跟的是伪目标rm这一行要tab键开头这两行也算一组依赖关系和依赖方法最后如果将顺序反过来写这个时候在命令行make会执行clean结论make命令扫描Makefile文件的时候从上往下扫描默认形成第一个目标文件接着补充被.PHONY修饰的伪目标总是被执行我们的make clean可以一直被执行而make只能被执行一次那什么叫做不被执行呢默认老代码不做重新编译那make怎么知道bin和.c的新旧问题呢 这个时候就需要用到之前的AMC时间简单说就是make不看代码改没改只看文件最后的修改时间谁更早Makefile 从上到下扫描从下到上递归执行在之前的篇章中我们编译器是这样工作的而放到Makefile中则是这样的但是像这样写太麻烦了会有大量重复所以要引入变量如果是多文件的话$:当前规则的目标文件$:第一个依赖文件$^:所有全部依赖文件%.o:%.c :匹配所有.c编译成.o不用逐个写.o的规则4.进度条1.回车换行平常换行的意思是在当前行的位置另起一行而回车是重新到回到开头并另起一行在后面的进度条代码编写时要注意回车\r表示回车 \n表示换行2.缓冲区现阶段可以简单理解为一段内存块在打印内容时不加入换行符号而是回车符号并且需要sleep这时候打印的内容不会立马刷新出来而是放在了缓冲区这个时候需要一行代码即可fflush(stdout);3.测试代码如图这样输入就可以实现9到0的倒计时但是当我们的i为10时就会显示90,80.....这里就要理解显示的问题了我们输出的并非12345这些数字而是‘1’‘2’‘3’....这样的字符所以修改后的代码应该是这样2d前面不加 - 会导致不向左靠齐这样我们的测试代码就完成了4.实现进度条首先我们需要确定好实现什么样的进度条如图这就是我们要实现的进度条最右边的会随着运行而旋转verson1原理版本首先创建好对应文件头文件main文件Makefile文件.c文件解释几个点1.memset 清零内存2.cnt%len是因为有效字符 | / - \合法下标为0123循环里面cnt会从0跑到100如果直接lable[cnt] 会使下标超出0~3访问非法内存导致崩溃所以len求出来等于4取模就可以保证一直是01233.NUM是101 因为最后还有个‘/0’但是这样的代码是无法使用的这样的进度条只是一段固定时长的演示代码无法在真实环境使用verson2 真实版本名称解释total下载的文件总量speed下载速度current当前的下载量FlushProcess刷新进度注意进度条的符号显示与函数被调用次数有关与下载的信息无关所以static int cnt头文件.c文件main文件这样就可以实现上传和下载的进度条了