目录

  • 1.makeflie
  • 2.多个文件执行makefile

1.makeflie

makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建
我们使用makefile就在当前目录下创建makefile/Makefile前单字母大写小写都可以。
makefile里面会有什么东西呢?
makefile里面会有依赖关系
依赖关系 :比如有个可执行文件test,但是想有它就要有test.c这个就叫做依赖关系,而使用test.c形成test这个就叫依赖方法
了解了这个我们就来正式使用makefile
在马克file输入下面代码,注意第二行不是用空格,一定要用TAB键

我们再把mytest.c文件给写上

这个时候我们就可以直接make,再运行make生成的可执行文件运行就行了

但是我们想要清理文件怎么办
vim makefile

改成那样就可以了.PHONY这是一个伪目标
输入 make clean就可以清除mytest可执行文件了

而至于为什么默认make是会执行make mytest而不是make clean是因为make mytest在上面,因为它是从上往下默认形成的
.PHONY:相当于makefile的语法格式中的一个关键字
比如clean被.PHONY修饰时,表明:总是被执行的
那么我们先来了解下总是不被执行的,比如下面的make 因为生成了mytest
所以接下的make除了第一次创建以外都会报错

而总是被执行就不会有这种问题,想执行多少次就执行多少次

但是它是怎么区分目标文件的新旧的

Access表示读取或者进入的时间
再了解下面二个,我们先回忆下文件 = 内容加属性
Modify表示内容变了的时间
Change表示属性变了的时间
看下面图片我们只改变了属性,可以看到只有change时间变了

但是这里要注意修改了内容,可能会改变属性,因为改变了内容,大小可能会发生变化
那么我们现在就来证明,因为旧文件比新文件生成的旧那么就不生成

那么我们来用touch来改下Modiy的更新时间看看make会不会成功,我们不改原代码

可以看到重新生成了

2.多个文件执行makefile

依次创建以下文件
test.c

#include"test.h"void show()
{printf("hello hello hello \n");
}

test.h

#include<stdio.h>extern void show();

main.c

#include"test.h"int main()
{show();return 0;
}

makefile文件

hello:main.o test.ogcc -o hello main.o test.o
main.o:main.cgcc -c main.c -o main.o
test.o:test.cgcc -c test.c -o test.o
.PHONY:clean
clean:rm -f *.o hello

makefile(详细讲解)相关推荐

  1. 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)

    今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...

  2. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  3. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

  4. Python的零基础超详细讲解(第七天)-Python的数据的应用

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  5. Python的零基础超详细讲解(第五天)-Python的运算符

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  6. java异常详细讲解_Java异常处理机制的详细讲解和使用技巧

    一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...

  7. 未来网络发展的趋势——IPv6详细讲解与基本配置

    实验目的: 1. 掌握IPv6的基本工作原理: 2. 区别IPv6和IPv4有什么区别: 3. 掌握IPv6的一些新的特征: 4. 掌握IPv6的发展进程和部署情况: 实验拓扑: 实验步骤:   一. ...

  8. Php中如何记录本报时间,详细讲解PHP的日期时间函数date()

    详细讲解PHP的日期时间函数date() 作者:wang 日期:2009-06-06 字体大小: 小 中 大 1,年-月-日 echo date('Y-m-j'); 2007-02-6 echo da ...

  9. PE格式详细讲解4 - 系统篇04|解密系列

    PE格式详细讲解4 - 系统篇04 让编程改变世界 Change the world by program   到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的 ...

  10. python爬虫原理-python爬虫原理详细讲解

    原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...

最新文章

  1. UVA10212 【The Last Non-zero Digit.】
  2. POJ 3258:River Hopscotch (最大化最小值)
  3. ERP与EWM集成配置---ERP 端(一)
  4. Xmind settings lower
  5. 晒一下我的代码生成器
  6. ajax 五种状态,ajax的五种状态
  7. php mysql 操作函数_PHP操作mysql函数详解,mysql和php交互函数
  8. html特殊符号sm,以前搜集的一些资料—html中的特殊字符(2)
  9. Qt总结之二十:加载字体库
  10. 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
  11. DOS获取注册表键值
  12. 【关键词排名点击软件】网站关键词挖掘常用的五个工具
  13. 风尚云网学习-关于学习和前端
  14. 土巴兔上市未卜,群核科技换个姿势能否撑起“3D云设计第一股”?
  15. #4508. Triples I
  16. 【每日最爱一句】2013.06.10
  17. 自定义CKeditor上传图片按钮
  18. PHP 生成Excel报表基本操作
  19. c语言程序设计陈彦君,2008 年度焦作学科研成果奖励登记表(论文).doc
  20. 3DMAX入门教程 | 命令面板 标准基本体的创建和参数

热门文章

  1. 整理1985-2020年《中国城市统计年鉴》主要数据
  2. github客户端的使用方法教程
  3. Ubuntu14.04(LTS)gitHub客户端安装
  4. 学习爬虫第二天:继续爬公司内部的通讯录
  5. 高等数理统计(part7)--无偏估计
  6. idea json转对象(Java实体类)
  7. SWAT模型高阶应用暨无资料地区建模、不确定分析与气候变化、土地利用对面源污染影响模型改进案例分析
  8. vivado第三方编辑器的使用
  9. Javaweb网易云音乐
  10. vue.js快速入门 1