linux make详解及进度条小程序

常用工具:
make/makefile:项目自动化构建工具
makefile:普通文本文件,记录了项目的构建流程规则
make:一个解释程序,到当前执行make命令的目录下寻找Makefile文件,并且对makefile中记录的项目构建规则进行解释执行
makefile:编写规则

  • 目标对象:依赖对象
  • [tab]命令操作

make执行规则
1.解释执行时,在makefile中寻找目标对象(只寻找第一个目标对象),找到目标对象后,执行命令操作

  • 如果有目标对象,判断目标对象是否存在:
    • 如果目标对象不存在:执行命令操作-生成目标对象
    • 如果目标对象已存在:判断是否有依赖对象
      • 没有依赖对象:直接报错(目标最新)-不需要重新生成
      • 如果有依赖对象:判断依赖对象是否存在?
        • 依赖对象存在:通过目标对象和依赖对象的最后一次修改时间判断是否需要重新执行操作命令-生成目标对象
        • 依赖对象不存在:make继续在makefile中寻找依赖对象的生成规则,先生成依赖对象,进而再生成目标对象

预定义变量:

  • $@:目标对象
  • $^:所有依赖对象
  • $<:依赖对象中的第一个
  • %:通配符%.o%.c
  • #:为注释

.PHONY用于声明伪对象:不管目标对象是否存在,是否更新,每次都重新生成
wildcard:获取指定文件名–获取当前目录下以.c结尾的文件名
patsubst:字符串替换–对src变量内容进行替换,将 .c替换成.o
eg:src=$(wildcard ./*.c)
eg:obj=$(patsubst %.c,%.o,$(src))

git:项目版本控制工具

  • svn-集中式 git-分布式
  • 下载:git clone
  • 提交:git add git commit-m “bak”
  • 上传:git push origin masker

进度条程序:

  1 #include
  2 #include
  3 #include
  4                                                     
  5 int main()
  6 {
  7   int i = 0;
  8   char bar[1024] = {};
  9   const char* lable = "|/-\\";
 10   while(i <= 100)
 11   {
 12     bar[i++] = '#';
 13     printf("[%c][%d%%][%s]\r",lable[i%4],i,bar);
 14     fflush(stdout);
 15     sleep(1);
 16   }
 17   printf("\n");
 18   return 0;
 19 }

缓冲区对文件读写的影响:数据并没有直接写入文件,而是写入到缓冲区(内存)中,等到缓冲区中数据写满或者刷新缓冲区的时候,才会将数据真正写入到文件
回车和换行:
换行:输出位置移动到下一行
回车:输出位置移动到起始位置

你可能感兴趣的:(linux make详解及进度条小程序)