makefile的两个变量(自动变量和普通变量)

(1)普通变量

如:

obj=main.o add.o sub.o mul.o div.o //将后面的值赋值给obj,obj就是一个普通变量

target=zsx  //将zsx赋值给target

makefile中已经定义的一些普通变量(通常格式都是大写,类似环境变量,它们都是普通变量,直接赋值即可,任意类型皆可):CC,其值为gcc或cc(cc就是gcc,完全等价),且用户还可以修改这些值。

(2)自动变量

$<: 规则中的第一个依赖     $@: 规则中的目标     $^: 规则中的所有依赖

注意:这些变量只能在规则的命令中使用

(3)举例

则通过使用自动变量和普通变量,可以简化makefile的书写,下面举例说明。依然使用上篇的文章的例子。

[root@localhost src]# vim makefile

obj=main.o add.o sub.o mul.o div.o  //普通变量
target=zsx   //普通变量

$(target):$(obj)
        $(CC) -ggdb3 $^ -o $@     //自动变量只能使用在命令中

main.o:main.c
        $(CC) -pedantic -pipe -Wall -c $^ -o $@ -I ../include   //单独拿出来 是因为其需要指明头文件,而头文件在另一个目录中

%.o:%.c
        $(CC) -pedantic -pipe -Wall -c $< -o $@

[root@localhost src]# ls
add.c  div.c  main.c  makefile  mul.c  sub.c
[root@localhost src]# make
cc -pedantic -pipe -Wall -c main.c -o main.o -I ../include
cc -pedantic -pipe -Wall -c add.c -o add.o
cc -pedantic -pipe -Wall -c sub.c -o sub.o
cc -pedantic -pipe -Wall -c mul.c -o mul.o
cc -pedantic -pipe -Wall -c div.c -o div.o
cc -ggdb3 main.o add.o sub.o mul.o div.o -o zsx

[root@localhost src]# ls
add.c  add.o  div.c  div.o  main.c  main.o  makefile  mul.c  mul.o  sub.c  sub.o  zsx
[root@localhost src]# ./zsx
sum = 26
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值