Linux项目自动化构建工具-make/Makefile

make和makefile有什么用?

一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的

规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂

的功能操作

makefile带来的好处就是------"自动化编译",一旦写好,只需要一个make命令,整个工程完全自动编

译,极大的提高了软件开发的效率。


我们首先要明确make是一个指令,而makefile是一个文件(依赖关系和依赖方法)

什么是依赖关系和依赖方法:

依赖关系:我为什么要帮你

依赖方法:怎么帮

具体实例:

TIP:

1、Makefile和make形成目标文件的时候,默认是从上到下扫描makefile文件的。

2、默认只形成一个

问题:make和makefile怎么知道可执行程序是比较新的呢?

答:这个是通过对比时间比出来的,只要可执行程序的最近修改时间比所有源文件的最近修改时间新,说明它就是最新的!

认识一下时间:(ACM)

stat关键字查询文件的时间

文件 = 内容 + 属性

这里一共有三个时间,具体文件的时间与modify(文件内容)一致。

access表示进入文件的时间(可能不会实时)

modify表示修改文件内容的具体时间

change表示修改文件属性的具体时间

下面的各个点都表示文件的属性,因此modify修改,change一定会修改;而change(属性)修改,modify(内容)不一定修改!!!

我们可不可以在文件内容没有更新的情况下强制执行命令呢?

可以,这里需要另一个语法 .PHONY:

其中mybin也可以这样书写

问题:我们这里为什么不把伪目标加到生成可执行文件上,而是加到clean上呢?

假设我们有一个大项目,里面包含了几百个源文件,如果我们只修改其中的几个源文件,这时加上伪目标,仍然生成几百个可执行文件,就大大浪费时间空间等资源,我们只需要生成我们修改过的源文件即可。


Linux第一个小程序------进度条

第一个小技巧:

我们以后再写程序之前,先把makefile跑通之后再写test.c的内容。

1、预备的两个小知识

a、缓冲区

输出结果没有立刻输出 you can see me

而是等了3秒钟,才将结果输出,难道是先执行sleep(3) 吗?

我们时刻铭记程序的执行顺序一定是顺序结构的!

因此正确的解释就是printf已经跑完,输出的字符串一定是被保存起来了。被保存的地点就是缓冲区。在退出程序的时候,才刷新出来。

b、回车和换行

回车和换行本质上来说是两个东西。

在老式的键盘中,enter键长这样。

换行就是将内容换到下一行。

回车是将光标放在这一行的最初始位置。

先换行再回车,才有了enter的效果。

下面是普通版本的

cpp 复制代码
 1 #include<stdio.h>
  2 #include<unistd.h>
  3 
  4 int main()
  5 {
  6     int cnt = 9;
  7     while(cnt)
  8     {
  9         printf("%d\r", cnt);
 10         fflush(stdout);//刷新标准输出流
 11         cnt--;
 12         sleep(1);
 13     }
 14                                                                                                                                                                  
 15     return 0;//程序就开始结束
 16 }

\r表示回车,就是将光标重新放在第一位。

其中fflush将缓冲区的数据流进行刷新,防止标准输出流没有显示

相关推荐
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK63075 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体