荣耀官方网站,做外贸外文网站怎么做好,网站平台被骗了怎么办,正规网站建设的公司文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile
make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test #xff0c; test.c 一样都是… 文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile
make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test test.c 一样都是文件
如何使用
我们先touch一个makefile文件 touch makefile 我们通过vim进入到makefile里 假如我们需要写一个输出hello makefile 的程序我们在makefile里是如何实现的呢我们先来看写法 这是我们的test.c 这是我们的makefile中的内容 当我们想通过test.c直接生成一个可执行的文件的时候我们就直接可以用make 这里会直接生成一个test的可执行文件 当我们去执行这个可执行文件的时候我们就可以发现我们直接输出了 hello makefile 但是这很奇怪我们本来可以直接gcc -o test test.c 这不是多此一举吗但是当我们的依赖文件变多的时候我们就会发现make和makefile到底有多好用了 接下来我们就需要看看makefile中的那些内容到底是都代表着什么了 我们先来看第一个test我们称之为目标文件make的工作原理就是去找makefile中第一个文件作为目标文件也就是我们待会儿可执行的文件但是这个可执行的文件是通过哪些文件经过编译链接生成得来的呢所以我们还需要依赖文件列表这里用到了列表证明依赖文件可以不止一个
依赖关系 和 依赖方法
这里的依赖关系和依赖方法通俗的来讲就是你作为一个大学生月末了没钱了你给家里人打电话说我是某某某这就叫做表明依赖关系但是你如果光标明依赖关系你的家里人知道你要干嘛吗他们当然知道你是某某某你是不是得说月末了手头有点紧这就叫做表明依赖方法这样你的家里人才知道奥要给你发点儿生活费了。 这就是依赖关系和依赖方法在这里写就是通过依赖文件列表确定目标文件的构成是由哪几个依赖文件构成的再通过编译器将.c文件也就是源文件编译链接过后变成目标文件串在一起
伪目标
这里有个.PHONY这其实就是个关键词用来修饰为伪目标我们一般将clean这个目标文件设置成伪目标之后这里的make就可以一直用不存在每次都需要clean一下 伪目标的特性是总是被执行的所以make就可以一直生成目标文件
写个程序-进度条
讲了那么多我们来实现一个小程序吧 一个进度条
我不会做动图不好意思儿 大致就是实现一个这样的 一个缓慢的进度条然后后面带个完成度然后带一个显示键 代码实现通过三个文件–主要是为了展示make的用法一个文件也可也生成 process.h 1 #includestdio.h2 3 #define Max 100 4 #define signal # 5 void process();process.c 1 #includeprocess.h 1 #includestdio.h2 #includestring.h | 2 3 #includeunistd.h | 3 #define Max 100 4 void process() | 4 #define signal # 5 { | 5 void process();6 char arry[Max]; |~7 memset(arry,\0,sizeof(arry)); |~8 int cnt 0; |~9 char sig[] {/,-,\\,|}; |~10 while(cnt 100) |~11 { |~12 printf([%-100s][%3d%][%c]\r,arry,cnt,sig[cnt%4]); |~13 fflush(stdout); |~14 arry[cnt] signal; |~15 usleep(50000); |~16 } |~17 printf(\n); |~18 } test.c #includeprocess.h2 3 int main()4 {5 process(); 6 return 0;7 }这个usleep是休眠的意思它的单位是微秒就是说一秒 1000*1000微秒可以去cplusplus或者直接在Linux上用man去查
主要是我们来看makefile中的写法 换行和回车的区别
我们写这里的process的时候需要用到\r 这是什么呢这是回车符回车和换行可不是一个东西他们是有区别的那么一张图就能表现出来他们的区别