02.Makefile基础的基础

1 Makefile基础

1.1 变量

Makefile中的变量都是字符串,类似于C语言中的宏。

main: main.o input.o hello.o
	gcc -o main main.o input.o hello.o

​ 用变量的方式修改上面代码:

#Makefile变量的使用
objects = main.o input.o hello.o
main: $(objects)
	gcc -o main $(objects)

​ 这里定义了一个变量objects,并且将main.o等赋值给它。后面的引用变量的方法是$(变量名)。

1.1.2 赋值符“=”

​ 使用“=”在给变量赋值的时候,不一定要用已经定义好的值,也可以使用后面定义的值。

name = zzk
curname = $(name)
name = zch

print:
	@echo curname: $(curname)

​ 最后的输出结果是“zch”

1.1.3 “:=”

name = zzk
curname := $(name)
name = zch

print:
	@echo curname: $(curname)

​ 最后的输出结果是“zzk”。 :=赋值符,只能使用前面定义的值。

1.1.4 赋值符"?="

curname ?= zch

上述的代码的意思就是,如果变量curname前面没有被赋值,那么此变量就是“zch”,如果已经赋值了,就使用前面赋的值。

1.1.5 变量追加“+=”

​ 即在前面已经定义好的变量,追加一个。

1.1.6 模式规则

​ 每一个C文件都要写一个对应的规则,当C文件较多的时候显然是不能够这么做的。因此,可以使用Makefile中的模式规则。通过模式规则,我们就可以采取使用一条规则来将所有的.c文件编译成对应的.o文件。

​ 在模式规则中模式规则中,至少在规则的目标定定义中要包涵“%”,否则就是一般规则,目标中的“%”,表示对文件名的匹配,“%”表示长度任意的非空字符串,比如“%.c”就是所有的以.c结尾的文件,类似于通配符,a.%.c表示的是以a开头,以c结束的所有文件。

1.1.7 自动化变量

就是所有的以.c结尾的文件,类似于通配符,a.%.c表示的是以a开头,以c结束的所有文件。

1.1.7 自动化变量

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值