您的位置:首页 > 其它

make--变量 条件判断 函数定义及调用

2019-01-23 11:20 921 查看

一.变量的高级主题

A.变量值的替换
1.使用指定字符(串)替换变量中的后缀字符(串)
2.语法格式:$(var:a=b) (将a替换成b)
a.替换表达式中不能有任何的空格
b.make中支持使用${}对变量进行取值
示例

src:=a.cc b.cc c.cc
obj:=$(src:cc=o)

test:
@echo "obj=>$(obj)"

输出结果

由上图可以看出变量值的替换
B.变量的模式替换
1.使用%保留变量值中的指定字符,替换其它字符
2.语法格式:$(var:a%b=x%y)
a.替换表达式中不能有任何的空格
b.make中支持使用${}对变量进行取值
示例

src:=a1b.c  a2b.c  a3b.c
obj:=$(src:a%b.c=x%y)

test:
@echo "obj=>$(obj)"

输出结果

C.变量值的嵌套引用
1.一个变量名之中可以包含对其它变量的引用
2.嵌套引用的本质是使用一个变量表示另一个变量
如图所示

D.命令行变量
1.运行make时,在命令行定义变量
2.命令行变量默认覆盖makefile中定义的变量
示例及运行结果

E.override关键字
1.用于指示makefile中定义的变量不能被覆盖
2.变量的定义和赋值需要使用override关键字
示例及运行结果

F.define关键字
1.用于在makefile中定义多行变量
2.多行变量的定义从变量名开始到endef结束
3.可使用override关键字防止变量被覆盖
4.define定义的变量等价于使用=定义的变量
示例及运行结果

二.条件判断语句

A.makefile中支持条件判断语句
1.可以根据条件的值来决定make的执行
2.可以比较两个不同变量或者变量和常量值

需要注意的是:条件判断语句只能用于控制make实际执行的语句;但是,不能控制规则中命令的执行过程

条件判断的关键字有四种:

关键字 功能
ifeq 判断参数是否相等,相等为true,否则为false
ifneq 判断参数是否不相等,不相等为true,否则为false
ifdef 判断变量是否有值,有值为true,否则为false
ifndef 判断变量是否没有值,没有值为true,否则为false
[p]示例及运行结果[url=http://blog.51cto.com/13475106/mailto:br/>![](https://s1.51cto.com/images/blog/201901/23/e62c12a72d738849e5901dc527cc2459.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
**注意:**
1.条件判断语句之前可以有空格,但不能有Tab字符
2.在条件语句中不要使用自动变量($@,$^,$<)![](https://s1.51cto.com/images/blog/201901/23/e62c12a72d738849e5901dc527cc2459.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
**注意:**
1.条件判断语句之前可以有空格,但不能有Tab字符
2.在条件语句中不要使用自动变量($@,$^,$<)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  make makefile
相关文章推荐