韦东山嵌入式第一期学习笔记DAY_6——9_6_Makefile的语法

作者:GWD 时间:2019.7.7

一、课程内容:
摘要:本节课写了一个程序,a,b,c三个c文件,其中a.c是主函数调用b.c和c.c中的printf函数,目的是引入Makefile以及学习一些Makefile中的规则符号和在Makefile中定义变量。

1、问:什么是通配符%,有什么作用?
答:通配符是一种特殊语句,用来模糊搜索文件。当查找文件时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 在Makefile中用来代替重复出现的a.o :a.c、b.o : b.c……从而达到简化避免多次重复输入的目的。<表示第一个依赖,@表示目标文件,^表示所有依赖;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、问:如何利用Makefile清除中间文件?
答:将clean指令作为一个没有依赖文件的“目标文件”,执行这个可执行文件就行了。由此可见,Makefile在使用时可以带目标名也可以不带,若不带目标名则生成规则里面的第一个目标。
在这里插入图片描述
在这里插入图片描述
3、问:如何在Makefile中定义变量与各变量的区别?
答:变量有:即时变量、延时变量;简单变量(即时变量) :A := xxx(A的值即刻确定,在定义时即确定);延时变量B = xxx (B的值使用到时才确定);
:= # 即时变量
= # 延时变量
?= # 延时变量, 如果是第1次定义才起效, 如果在前面该变量已定义则忽略这句
+= # 附加, 它是即时变量还是延时变量取决于前面的定义
在这里插入图片描述
在这里插入图片描述
二、学习要点
注:使用变量时,用 来 引 用 来引用 (变量);
三、代码:
a.c

#include<stdio.h>
int main(void)
{
fun_b();
fun_c();

return 0;
}

b.c

#include<stdio.h>
void fun_b(void)
{
	printf("This is B\n");
}

c.c

#include<stdio.h>
void fun_c(void)
{
	printf("This is c\n");
}

语法的Makefile

test  : a.o b.o c.o
	gcc -o test $^
%.o : %.c
	gcc -c -o $@ $<
clean:
	rm *.o test

变量的Makefile

a:=$(c)
b =$(c)
c = gwd
show:
	@echo a = $(a) #这里的@是不显示echo
	@echo b = $(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值