makefile(详细讲解)
目录
- 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(详细讲解)相关推荐
- 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)
今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...
- Python的零基础超详细讲解(第十三天)-Python的类与对象
基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...
- Python的零基础超详细讲解(第十二天)-Python函数及使用
基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...
- Python的零基础超详细讲解(第七天)-Python的数据的应用
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
- Python的零基础超详细讲解(第五天)-Python的运算符
往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...
- java异常详细讲解_Java异常处理机制的详细讲解和使用技巧
一起学习 1. 异常机制 1.1 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 1.2 ...
- 未来网络发展的趋势——IPv6详细讲解与基本配置
实验目的: 1. 掌握IPv6的基本工作原理: 2. 区别IPv6和IPv4有什么区别: 3. 掌握IPv6的一些新的特征: 4. 掌握IPv6的发展进程和部署情况: 实验拓扑: 实验步骤: 一. ...
- Php中如何记录本报时间,详细讲解PHP的日期时间函数date()
详细讲解PHP的日期时间函数date() 作者:wang 日期:2009-06-06 字体大小: 小 中 大 1,年-月-日 echo date('Y-m-j'); 2007-02-6 echo da ...
- PE格式详细讲解4 - 系统篇04|解密系列
PE格式详细讲解4 - 系统篇04 让编程改变世界 Change the world by program 到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的 ...
- python爬虫原理-python爬虫原理详细讲解
原标题:python爬虫原理详细讲解 一 .爬虫是什么 1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. 2.互联网建立的目的?互联网的 ...
最新文章
- UVA10212 【The Last Non-zero Digit.】
- POJ 3258:River Hopscotch (最大化最小值)
- ERP与EWM集成配置---ERP 端(一)
- Xmind settings lower
- 晒一下我的代码生成器
- ajax 五种状态,ajax的五种状态
- php mysql 操作函数_PHP操作mysql函数详解,mysql和php交互函数
- html特殊符号sm,以前搜集的一些资料—html中的特殊字符(2)
- Qt总结之二十:加载字体库
- 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
- DOS获取注册表键值
- 【关键词排名点击软件】网站关键词挖掘常用的五个工具
- 风尚云网学习-关于学习和前端
- 土巴兔上市未卜,群核科技换个姿势能否撑起“3D云设计第一股”?
- #4508. Triples I
- 【每日最爱一句】2013.06.10
- 自定义CKeditor上传图片按钮
- PHP 生成Excel报表基本操作
- c语言程序设计陈彦君,2008 年度焦作学科研成果奖励登记表(论文).doc
- 3DMAX入门教程 | 命令面板 标准基本体的创建和参数