Makefile笔记之一 ------ 变量的引用及赋值
1.变量的引用方式:
”$(变量名)“或者”¥{变量名}“
例如:
${Objs}就是取变量Objs的值
注意:
当变量名为单字符是可以采用:“$a”的方式引用,多字符则不行
2.变量定义的两种方法,即对变量进行赋值:
(1)使用递归展开式变量“=” 左侧为变量名,右侧是变量的值,该方法的优点是右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后 面定义的值。
(2)使用直接展开式变量“:=” 使用“:=”定义变量时,变量值中对其他量或者函数的引用在定义变量时被展开(对变量进行替换)。所以变量被定义后就是一个实际需要的文本串,其中不再包含任何变量的引用。这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量
3.“?=”操作符
“?=”被称为条件赋值的赋值操作符:只有此变量在之前没有赋值的情况下才会对这个变量进行赋值
4.环境变量
(1)系统环境变量可带入到执行make的Makefile文件中,但是如果make命令行加入变量或者是该变量已经在Makefile文件中定义,则系统环境变量将会被覆盖,如果make指定了“-e”参数,那么,系统环境变量将覆盖Makefile中定义的变量
(2)如果我们在环境变量中设置了“CFLAGS”环境变量,那么我们就可以在所有的Makefile中使用这个变量了。这对于我们使用统一的编译参数有比较大的好处。如果Makefile中定义了CFLAGS,那么则会使用Makefile中的这个变量,如果没有定义则使用系统环境变量的值
(3)环境变量的传递使用,当make递归调用时,上层Makefile中定义的变量会以系统环境变量的方式传递到下层的Makefile中。当然,默认情况下,只有通过命令行设置的变量会被传递。而定义在文件中的变量,如果要向下层 Makefile传递,则需要使用exprot关键字来声明。
Makefile笔记之一 ------ 变量的引用及赋值的更多相关文章
- ES6学习笔记之变量的解构赋值
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构. 数组的解构赋值 以前,为变量赋值,只能直接指定值: 1 2 3 var a = 1; var b = 2; ...
- Go语言学习笔记1 变量,类型以及赋值
1.变量 1.1 声明变量 使用var关键字可以创建一个指定类型的变量: var i int = 0 var i = 0 var i int 以上三个表达式均是合法的,第三个表达式会将i初始化为int ...
- Go语言笔记 (2) 变量命名与多重赋值
变量命名 1.大小写 观摩以下代码: func main() { var m int = "你" var M int = "我" fmt.Println(m,M ...
- 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...
- 关于makefile中变量的多次赋值以及override指令
1 基本原则如下 1.1 原则1 变量的普通赋值是有先后顺序的,后面的赋值会覆盖掉前面的赋值. 1.2 原则2 使用的时候,用的是其前面最后的赋值,就算其后面有使用了override指令的赋值也不会影 ...
- makefile笔记5 - makefile变量
在 Makefile 中的定义的变量,就像是 C/C++语言中的宏一样,他代表了一个文本字串,在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方.其与 C/C++所不同的是,你可以 ...
- Makefile内置变量,递归式变量,直接展开式变量,条件赋值,追加赋值
将shell命令的输出赋值给变量: VALUE = $(shell 命令) Makefile中给变量赋值: = 是递归展开式变量 value1 = 5 value2 = $(value1) ...
- 细说PHP-5.3.4变量的引用赋值
变量总是传值赋值.也就是说,当讲一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量.这意味着,当一个变量的值赋予另个一变量时,改变其中一个变量的值,将不会影响到另一个变量.PHP中提供了 ...
- ES6 学习笔记 - 变量的解构赋值
变量的解构赋值 学习资料:ECMAScript 6 入门 数组的解构赋值 基本用法 可以从数组中提取值,按照对应位置,对变量赋值.这种写法属于"模式匹配". let [a, b, ...
随机推荐
- Java EE 经验
环境配置 GlassFish Error 1 Exception while loading the app : CDI deployment failure:Error loading class ...
- iis虚拟目录实现分布式文件服务器
前提:假定有2台服务器:服务器a和服务器b,则服务器a和b须在同一局域网内 服务器设定:a为web服务器,b为文件服务器.这里服务器环境是:Windows Server 2008 R2 大致步骤如下: ...
- git 常用命令总结
git是什么就不用说了,全世界都在用git.这里仅仅纪录git在mac上的一些使用命令(终端输入)操作,作为自己的备忘录,这里不做教程,下面会附上峰哥的教程. 1.安装git 最简单的安装方法,就是直 ...
- css3 FlexBox 弹性布局
Flex 弹性布局 这个是css3中新添加的内容,现在已经支持所有的浏览器,利用Flex布局,可以简便.完整.响应式地实现各种页面布局. 注意:在设置 flex 后,子元素的flaot ,clear, ...
- 执行ssh-add时出现Could not open a connection to your authentication agent
若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令 ...
- .NET WEB项目的调试发布相关
最近接触了.NET WEB项目,调试的时候因为没配置好文件浪费了些时间,特此记录一下相关配置,以后备用 如果IIS的基目录指向了别处,在build以后必须要发布,其实就是把最新的程序更新到IIS的基目 ...
- 原生js封装ajax,实现跨域请求
描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...
- 【Network】Neutron-Docker-K8S
Neutron-Docker-K8S openstack/neutron: Neutron is a virtual network service for Openstack. Neutron和SD ...
- 使用KRPano资源分析工具一键下载全景网站切片图
软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...
- spring mvc 中文参数乱码
最近做项目,springmvc的url中文参数乱码: 请求url: http://localhost:8080/supply/supply_list.htm?productName=测试&is ...