Makefile

**

Makefile三要素:

	目标、依赖、命令
	模板
	目标:依赖的文件或其他目标
	<tab>命令1
	<tab>命令2

示例

注: 
	1.先研究语法,再来查看示例
	2.忽略wuya即其底下所有文件 

里插入图述
./HD/makefile的内容:./HD/makefile描述

语法:

.PHONY:目标      	
		伪目标 即并不管依赖与目标的新旧,都会执行他所包含的命令

VPATH:
		通过变量“VPATH”可以指定依赖文件的搜索路径,当规则的依赖文件在当前目录不存在时,make会在此变量所指定的目录下去寻找这些依赖文件。
		举个例子:
				上述示例中 我如果将VPATH=$(SOUR_DIR)  去掉,调用make后,执行结果如下图
				![在这里插入图片描述](https://img-blog.csdnimg.cn/2017e09a64db447bbd08f9815fd86b95.png)
				原因:因为该例程中,我们的依赖文件是 build/*.o ,所以我们在生成.o文件时,默认去当前目录下(build)寻找 ,而实际存储位置为../source。所以找不到,才会显示没有规则制定目标。
				当然也可以稍微修改下规则		
				按下面这样将依赖文件的路径标明 就可以运行通过了
				![在这里插入图片描述](https://img-blog.csdnimg.cn/01cc8cb3dc1c4f7ca4232e8ebf729d65.png)
				按下面这样将依赖文件的路径标明 就可以运行通过了
自定义变量:
		=  					//延迟赋值
		:=            		//立即赋值
		?=                  //空赋值           当变量未赋值时有效
		+=					//追加赋值


自动化变量:
		$<        			//第一个依赖文件
		$^					//全部依赖文件
		$@					//目标
		通配符
%: 匹配任意多个非空字符与shell中的通配符* 异曲同工
**条件分支:**
		ifeq(var1,var2)
		...         //相等运行
		else
		...			//不相等运行
		endif
		
		
		ifneq(var1,var2)
		...      //不相等运行
		else
		...       //相等运行
		endif

常用函数:
	patsubst    
		作用:文本转换 将参数三中符合参数一的文本转换成参数二的样子
	     举例:$(patsubst %.c,%.o,a.c  b.c d.c)  结果:a.o b.o c.o
	
	notdir  	
		作用:去除文件路径
		举例:$ (notdir /linux/linux/a.c b.c)   结果 a.c b.c   
		
	wildcard    
		作用:查找当前文件夹下符合条件的文件
		举例:$ (wilecard *.c)
	
	foreach   
		作用:三个变量 将参数中的所有用空格隔开的单词赋值给参数1 并由参数3(表达式)依次执行
	示例:
		dirs :=a b c d
		$ (foreach dir,$ (dirs),$ (wildcard $(dir)))   结果 a b c d 四个文件夹下的所有文件				
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值