Linux Makefile用法

本文介绍了Makefile的基本概念,如何通过它进行模块化编译,工作原理中的依赖管理,以及变量和模式匹配的使用。还讲解了伪目标clean的设置,使得清理编译文件更加便捷。
摘要由CSDN通过智能技术生成

1、什么是makefile?

在这里插入图片描述

Makefile:将不同模块放在不同的目录中,定义一系列的规则进行 “自动化编译”

2、Makefile写法

在这里插入图片描述

vim makefile
填写样例:
app:sub.c add.c mult.c div.c main.c
        gcc sub.c add.c mult.c div.c main.c -o app

3、工作原理

在这里插入图片描述
1、依赖不存在,则 向下 检查:
比如:
在这里插入图片描述
2、时间检测
依赖的时间比目标的时间早:make: ‘app’ is up to date.
依赖的时间比目标的时间晚(我修改一下main.c文件):就会重新生成目标

4、变量(更方便)

在这里插入图片描述

5、模式匹配(更更方便)

在这里插入图片描述
在这里插入图片描述

6、函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
src中存放所有.c的文件,然后用patsubst将.c都替换成.o的文件。
在这里插入图片描述
**注意:**加上clean语句可以自动删除.o的文件,不过直接执行make不会调用clean,执行make clean才会调用。

再来补充一下:现在我们再make一下,把.o文件重新生成
在这里插入图片描述

touch clean 创建一个clean文件,然后make clean,这并不会执行清除操作,

这是由于clean没有依赖,总是被认为是最新的。

clean并不需要生成一个具体的文件,因此我们可以定义伪目标:.PHONYL:clean

.PHONY:clean
clean:
        rm $(objs) -f

此时执行 make clean 就可以清除.o文件了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值