makefile之变量赋值
makefile中变量赋值有4种方法:
= , := , += , ?=
= :直接赋值
变量 = 值
:= :位置相关赋值
如果右值为一个值,那么它和=没区别,如果右值为变量,那么左边变量的值等于右边变量当前位置的值,什么意思呢?
a = abc
b = $(a)
a = jkl all:
@echo $(b) .PHONY:all
执行这个makefile,输出 b的值为jkl, 在 b = $(a) 这句中,变量a的值被延迟展开,即由变量a最后一条赋值语句 a = jkl 决定。如果b赋值时采用 :=,则情况就不同了:
a = abc
b := $(a)
a = jkl all:
@echo $(b) .PHONY:all
此时输出b的值为abc, 它的意思就是获得当前位置变量 a的值赋值给b。
?= :询问左边变量是否定义过,即是否使用过赋值操作,没有则赋值,否则忽略。注意是是否定义过,而不是是否为空值,并且还要注意空值不等于空格,tab键等。
这里扯到赋空格,怎么符空格?或者tab
spacevalue=空格/tab#
需要注意的是#注释符是必须的,此时spacevalue的值就是赋值符=后面开始至#前这段,关于注释符有个陷阱, 假设定义一个变量dir,给它赋值一个路径
dir =/home/thomas #xx的路径
这是由于变量赋值时,赋值号左右两边的空格,tab都将忽略,是从第一个非空格,非tab到最后一个非空格,非tab结束,除非遇到注释符,否则到注释符才算结束。
+= :追加赋值
一个变量最终的值由上述赋值操作按照规则逐一计算决定。
makefile之变量赋值的更多相关文章
- Makefile的变量赋值和函数
在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地 展开在所使用的地方.其与C/C++所不同的是,你可以在Make ...
- [转] Makefile 基础 (5) —— Makefile 使用变量
该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客:(最原始版本) http://blog.csdn.net/haoel/article/details/2886 我转自 ...
- sql server存储过程中SELECT 与 SET 对变量赋值的区别
SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT. 对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们 并没有注意,其实这 ...
- mysql中变量赋值
http://www.cnblogs.com/qixuejia/archive/2010/12/21/1913203.html sql server中变量要先申明后赋值: 局部变量用一个@标识,全局变 ...
- Python基础0:变量 赋值 表达式和运算符
变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...
- shell变量赋值 不能有空格的原因
典型例子: a=date echo $a 成立 a =date echo $a 不成立 其实原因很简单 shell在解释命令时的原则是第一个符号标记只能是程序或者命令,有空格的时候第 ...
- paip.提升效率--批量变量赋值 “多元”赋值
paip.提升效率--批量变量赋值 "多元"赋值 ##石麻是批量变量赋值. 为一组变量赋值. 例子 1 <?php $my_array = array("Dog&q ...
- jquery ajax给外部变量赋值 async: false
开发过程中用到检查是否存在手机号问题. //验证手机号是否注册 var bl = false; $.ajax({ type: ...
- SqlServer中使用Select语句给变量赋值的时候需要注意的一个问题
我们知道在SqlServer中可以用Select语句给变量赋值,比如如下语句就为int类型的变量@id赋值 ; select @id=id from ( as id union all as id u ...
随机推荐
- Elasticsearch 教程--数据
在Elasticsearch中,每一个文档都有一个版本号码.每当文档产生变化时(包括删除),_version就会增大.在<版本控制>中,我们将会详细讲解如何使用_version的数字来确认 ...
- # ASP.NET Core依赖注入解读&使用Autofac替代实现
标签: 依赖注入 Autofac ASPNETCore ASP.NET Core依赖注入解读&使用Autofac替代实现 1. 前言 2. ASP.NET Core 中的DI方式 3. Aut ...
- js动态的把左边列表添加到右边,可删除。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery实现表格动态添加
//点击追加触发$(function(){$("#button").click(function(){var div_ = $("#sel").val();va ...
- 【工业串口和网络软件通讯平台(SuperIO)教程】一.通讯机制
1.1 应用场景 通讯平台的交互对象包括两方面:第一.与硬件产品交互.第二.与软件产品交互.基本这两方面考虑,通讯平台一般会应用在两个场景: 1)通讯平台应用在PC机上 主要应用在自动站的工控机 ...
- 获取SqlServer存储过程定义的3种方法
第一种: declare @p_text varchar(max) SELECT @p_text= text FROM syscomments WHERE id = ( SELECT id FROM ...
- 前端Demo常用库文件链接
<!doctype html><html><head> <meta charset="UTF-8"> <title>前端 ...
- [deviceone开发]-利用do_ListView模拟单选功能
一.简介 这个是利用do_ListView组件实现多个选项里选择一项的功能,示例很简单,但是有助于理解复用机制,也可以直接参考使用.初学者推荐.二.效果图 三.相关下载 https://github. ...
- html基础大全(经典)
HTML教程 一.HTML基础(人) 1.基础概念: 1.1.自动闭合标签和闭合标签(如出错html编写时不会报错) 自闭合:<mete /> 闭合:<table>文字< ...
- PKCS#1规范阅读笔记2--------公私钥ASN.1结构
PKCS#1种介绍了哈希算法的OID等的ASN.1结构,因为使用ASN.1的解码工具(比如:ASN1View)时,会自动显示出各OID的含义,所以这里就不说明了.下面就只简单摘抄一下RSA公私钥的AS ...