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 |
**注意:**
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.在条件语句中不要使用自动变量($@,$^,$<)
相关文章推荐
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
- python--基础学习(二)判断 、循环、定义函数、继承、调用
- 编译器报:未调用原型函数(是有意用变量定义的吗?)(本文为原创,转载清注明出外)
- JavaScript 函数调用规则和if条件判断
- 实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 result[i](),结果与 fn
- 黑马程序员—声明类Person,包含2个成员变量:name、age。定义函数sayHello(), * 调用时输出:我叫***,今年***岁了。声明类Chinese继承Person。
- swift自学笔记(二)(循环、条件判断、可选变量、函数、面向对象)
- 定义一个包含私有成员变量和函数的类,再定义一个内部类,在内部类函数中访问外部成员变量,并调用外部函数。在外部类函数中创建内部类对象,调用内部类函数
- 快学Scala-变量声明、常用类型、条件与块表达式、循环、方法函数的调用
- C 代码调用 C++ 变量、函数提示未定义
- 复习4次课(12月1日) 1.1 函数定义 1.2 函数的参数 1.3 函数的默认参数 1.4 函数的变量 1.5 函数的返回值 1.6 多类型传值和冗余参数 1.7 函数的递归调用
- Python的列表等变量的声明必须要在函数定义与函数调用之前
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- 写一方法来实现两个变量的交换。在主调函数中定义两个整型变量,并初始化,调用交换方法,实现这两个变量的交换。(使用ref参数)
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- 在vim中使用cscope查找调用、定义函数和变量的地方
- 在vim中使用cscope查找调用、定义函数和变量的地方
- C语言如何跨文件调用函数定义中声明的变量
- 父类中调用自身定义的虚函数,其中若修改派生类定义的变量,无效
- 变量定义与函数调用