Makefile回顾

Makefile的知识回顾
Make工程管理器是完全根据Makefile文件中的编译规则命令进行工作的。Makefile文件由以下三项基本内容组成:
1、 需要生成的目标文件;(target file)
2、 生成目标文件所需要的的依赖文件;(dependency file)
3、 生成目标文件的编译规则命令行;
一般形式为:
Target file : dependency file
Commend
其中,Makefile规定在书写commend命令前必须加一个键。
Make工程管理器在编译程序时会检查每个依赖文件的时间戳,一旦发现某个依赖文件的时间戳比目标文件要新,就会执行目标文件的规则命令来重新生成目标文件。这个过程称为目标文件的依赖规则检查。依赖规则检查是Make工程管理器的最核心的工作任务之一。
重点函数:
1、 warning

格式为:$(warning parameter)
功能为:“Make”运行时显示参数。
返回值:parameter。
例子:  result := $(warning warning occure!)
       result == warning occure!

2、 error

格式为:$(error parameter)
功能为:停止“Make”运行并显示parameter。
返回值:parameter。
例子:  result := $(error error occure!)
       result == error occure!

3、 dir

格式为:$(dir parameter)
功能为:从parameter中取出目录部分。
返回值:目录部分。
例子:  result := $(dir /home/test/a.c)
       result == /home/test/

4、 if

格式为:$(if condition_parameter , execution_parameter)
功能为:如果condition_parameter非空,运行execution_parameter部分。
返回值:condition_parameter非空,返回执行参数部分。
例子:  result := $(if China , world)
       result == world

5、 call

格式为:$(call variable_parameter , parameter ……)
功能为:循环把参数依次赋给variable_parameter中的$(1)、$(2)…。
返回值:赋值后的变量的值。
例子:  a := $(2) $(1) 
       result := $(call $(a) x y)
       result == yx

6、 foreach

格式为:$(foreach variable_parameter , parameter_1 , expression)
功能为:循环取出parameter_1中的单词赋给variable_parameter,然后运行expression。
返回值:expression运行的结果。
例子:  a := x y z
       result := $(foreach b , $(a) , $(b).c )
       result == x.c y.c z.c

7、 addpreffix

格式为:$(addpreffix parameter_1 , parameter_2)
功能为:在parameter_2中的每个单词加上前缀参数1。
返回值:加上前缀的所有单词。
例子:  result := $(addpreffix src/ , x.c y.c)
       result == src/x.c src/y.c

8、 addsuffix

格式为:$(addsuffix parameter_1 , parameter_2)
功能为:在parameter_2中的每个单词加上后缀parameter_1。
返回值:加上后缀的所有单词。
例子:  result := $(addsuffix .c , x y)
       result == x.c y.c

9、 filter

格式为:$(filter model_parameter , parameter_1)
功能为:从parameter_1中筛选出符合model_parameter的字符串。
返回值:符合model_parameter的字符串。
例子:  a := x.c y.c z.h
       result := $(filter %.c , $(a))
       result == x.c y.c

10、 findstring

格式为:$(findstring parameter_1 , parameter_2)
功能为:在parameter_2中查找parameter_1。
返回值:如果找到返回parameter_1,反之返回NULL。
例子:  result := $(findstring me , you and me)
       result == me

11、 strip

格式为:$(strip parameter)
功能为:去掉parameter中开头和结尾的空格。
返回值:被去掉空格的parameter。
例子:  result := $(strip  China  )
       result == China

12、 wildcard

格式为:$(wildcard model_parameter)
功能为:列出当前目录下所有符合model_parameter的文件名。
返回值:当前目录下所有符合model_parameter的文件名。
例子:  result  := $(wildcard *.c)
       result == 当前目录下的所有的C文件名

13、 patsubst

格式为:$(patsubst model_parameter , parameter_1 , parameter_2)
功能为:将parameter_2中符合model_parameter的单词(parameter中被空格隔开的字符串)替换成parameter_1。
返回值:被替换后的parameter_2。
例子:  result := $(patsubst %.c , %.o , x.c y.c)
       result == x.o y.o

14、 subst

格式为:$(subst parameter_1 , parameter_2 , parameter_3)
功能为:将parameter_3中的parameter_1替换成parameter_2。
返回值:被替换后的parameter_3。
例子:  result := $(subst china , the world , I love china)
       result == I love the world
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值