makefile变量的定义
来源:互联网 发布:苹果电脑视频编辑软件 编辑:程序博客网 时间:2024/04/30 11:25
一、变量名Makefile变量名是不包括":"、"#"、"="、前置空白和尾空白的任何字符串。(1)变量名最好由字母、数字和下划线组成 尽管在GNU make中没有对变量的命名有其它的限制,但是字母、数字和下划线以外的字符可能会在make的后续版本中被赋予特殊的含义。(2)变量名大小写敏感(3)变量名中可以包含函数或者其它变量的引用(4)变量的值在长度上没有限制。值较长时可以分成多行书写,使用反斜杠(\)连接二、变量的引用(1)引用方式"$(varName)"或者"${varName}"备注:对于变量名为单字符的变量,在引用时可省略括号;对于变量名为多字符的变量不能省略括号,不然make会把变量名的首字母作为变量而不是整个字符串。(2)引用展开是严格的文本替换过程,即变量值的字符串被精确地展开在变量被引用的地方。(3)当引用未定义变量时,make默认其值为空。三、变量的定义主要有直接展开和引用展开两种方式:1、引用展开方式(1)使用"="或者指示符define定义变量 define定义变量的语法格式:以指示符"define" 开始,"endif"结束,变量名和指示符"define"在同一行,使用空格分开;指示符所在行的下一行开始一直到"endif"所在行的上一行之间的若干行的内容就是变量的值。 (2)在引用变量的地方对该变量引用的变量和函数进行展开,而不是在变量定义时展开。(3)可以引用在其后定义的其它变量,但是其的变量的定义必须在引用该变量之前。2、直接展开方式 (1)使用":="定义变量 (2)在变量定义时就展开该变量引用的变量和函数 (3)不可以引用在其后定义的变量四、高级用法1、条件赋值使用?=赋值,该操作符在变量之前没有被赋值的情况下才会对变量进行赋值2、追加赋值 使用+=给变量追加赋值(1)如果被追加值的变量之前没有定义,那么"+="会自动变成"=",此变量就被定义为一个引用展开的变量。 如果之前存在这个变量定义,那么"+="就继承之前定义时的变量风格(2)直接展开式变量的追加过程:变量使用":="定义,之后"+="操作将会先替换展开之前此变量的值,而后在末尾添加需要追 加的值,并使用":="重新给此变量赋值。(3)引用展开式变量的追加过程:变量使用"="定义,之后"+="操作时不对之前此变量中任何的引用进行替换展开,而是按照文 本的扩展方式替换(等号右边的文本未发生变化),而后在末尾添加需要追加的值,并使用":="重新给此变量赋值。3、替换引用 格式:"$(varName:A=B)"或者"${varName:A=B}"将变量中所有以A字符结尾的字替换为以B结尾的字4、override 通常在执行make时,如果通过命令行定义了一个变量,那么它将替代在Makefile中出现的同名变量的定义。就是说,对于一个在Makefile中使用常规方式(使用“=”、“:=”或者“define”)定义的变量,我们可以在执行make时通过命令行方式重新指定这个变量的值,命令行指定的值将替代出现在Makefile中此变量的值。如果不希望命令行指定的变量值替代在Makefile中的变量定义,那么我们需要在Makefile中使用指示符“override”来对这个变量进行声明,像下边那样:override VARIABLE = VALUE或者:override VARIABLE := VALUE也可以对变量使用追加方式:override VARIABLE += MORE TEXT 对于追加方式需要说明的是:变量在定义时使用了“override”,则后续对它值进行追加时,也需要使用带有“override”指示符的追加方式。否则对此变量值的追加不会生效。
阅读全文
0 0
- makefile变量的定义
- makefile中变量的定义
- Makefile中变量的定义
- Makefile知识点-3------makefile定义“空格”变量的定义方法
- makefile的变量定义和赋值
- Makefile文件变量的定义规则
- makefile中变量定义的空格
- Makefile --- 1 输出Makefile中定义的变量的值
- MakeFile中的变量定义
- Makefile变量定义解析
- MakeFile中的变量定义
- Makefile 变量定义(*赋值)
- MakeFIle 变量定义及引用 $@,$^,$<
- Makefile 目标后定义变量
- Makefile定义变量 = 和 := 的区别
- Makefile定义变量 = 和 := 的区别
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
- 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用
- left join、right join、inner join的区别
- 关于http请求的一些知识
- Timer
- JAVA基础--关键字 final 、static、this、super
- 把c语言注释转换为cpp注释
- makefile变量的定义
- HBase CoProcessor介绍以及使用
- 集中序列化的方式
- Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
- app客户端、服务端通信
- Redis高级应用
- WPF笔记-将DataRowCollection转成DataRow
- Safe Area of Xcode 9
- 【比特币】自己动手制作山寨币