linux依赖关系和简单的进度条实现

一:什么是依赖关系?

简单来说,就是一个文件的生产,需要另一个文件的存在

下面上一段代码

   main.o:main.c
       gcc -c main.c

这句代码的意识是

我的目的是生产main.o的文件

所需要的原料是main.c的文件

使用的方法是gcc -c main.c

这种依赖方法,我们通常在Makefile的文件中实现

我们一般用这种方式就能快速生成和清楚代码

就以上面为例,我们先来编辑一下main.c的内容

1 #include<stdio.h>
  2 int main()
  3 {
  4   printf("hello wolrd");                                                                                                                                                               
  5   return 0;                                                                                                               
  6 }                                                                                                                         
    

非常简单的一个hello world的代码

然后创建一个Makefile文件,输入以下内容

  1 hello:main.c
  2   gcc -o hello main.c                                                                                                                                                                  
  3 .PHONY:clean                  
  4 clean:                        
  5     rm -f hello

然后输入指令

make

我们就生产了这个文件

 输入./hello查看

 就出现了

如果清除的话就输入make clean

就删除了

 二、什么是.PHONY(注意有个点)

计算机根据属性来判断是否需要更新文件

比如,拿我们刚才的例子来说

我们已经生成了一个hello文件

那么再次进行make指令

 就会无法执行

这是因为两个指令没有对文件进行任何的修改,这种无意义的浪费资源行为,计算机是不支持的

所以就需要我们使用.PHONY

只要使用了这个命名我们就能无视该行为

但为了防止重复,我们一般都是将这种行为放在清除指令上

 如上,就可以重复清除,不受影响

三、做一个简单的进度条

直接上代码了

  1 #include<string.h>
  2 #include<stdio.h>
  3 #include<unistd.h>
  4 #define NUM 101
  5 #define STYLE '='
  6 void process()
  7 {
  8   char bar[NUM];
  9   memset(bar,'\0',sizeof(bar));
 10   const char* lable="|\\-/";
 11   int cnt=0;
 12   while(cnt<=100)
 13   {
 14     printf("加载中:\033[46;35m[%-100s][%d%%]%c\033[0m\r",bar,cnt,lable[cnt%4]);                                                                                                        
 15     fflush(stdout);
 16     bar[cnt++]=STYLE;
 17     usleep(20000);
 18   }
 19   printf("\n");
 20 }
 21 int main()
 22 {
 23   process();
 24   return 0;
 25 }

猜你喜欢

转载自blog.csdn.net/qq_62718027/article/details/126909498