- 浏览: 34443 次
- 性别:
- 来自: 苏州
最新评论
Makefile中的变量
2010年03月25日
Makefile中的变量
[/b]
[b]
在Makefile中,变量就是一个名字(像是C语言中的宏),代表一个文本字符串(变量的值)。在Makefile的目标、依赖、命令中引用一个变量的地方,变量会被它的值所取代(与C语言中宏引用的方式相同,因此其他版本的make也把变量称之为“宏”)。
[/b]
[b]当我们定义了一个变量之后,就可以在Makefile的很多地方使用这个变量。变量的引用方式是:使用“$(VARIABLE_NAME)”或者“${ VARIABLE_NAME }”来引用一个变量的定义。
[/b]
[b]美元符号“$”在Makefile中有特殊的含义,所有在命令或者文件名中使用“$”时需要用两个美元符号“$$”来表示。
[/b]
[b]对一个变量的引用可以在Makefile的任何上下文中,目标、依赖、命令、绝大多数指示符和新变量的赋值中。
[/b]
[b]变量引用的展开过程是严格的文本替换过程,就是说变量值的字符串被精确的展开在此变量被引用的地方。
[/b]
[b]Makefile中在对一些简单变量的应用,我们也可以不使用“()”和“{}”来标记变量名,而直接使用“$x”的格式来实现,此种用法仅限于变量名为单字符的情况。另外自动化变量也使用这种格式。
两种变量定义(赋值)
变量的这两种不同的风格的区别在于:1. 定义方式;2. 展开时机。
一 递归展开式变量
这一类型的变量的定义是通过“=”或者使用指示符“define”定义的变量。
[/b]
[b]这种变量的引用,在引用的地方是严格的文本替换过程,此变量值的字符串原模原样的出现在引用它的地方。
[/b]
[b]如果此变量定义中存在对其他变量的引用,这些被引用的变量会在它被展开的同时被展开。就是说在变量定义时,变量值中对其他变量的引用不会被替换展开,而是,变量在引用它的地方进行替换展开的同时,它所引用的其它变量才会被替换展开。
看一个例子:
foo = $(bar)
bar = $(ugh)
ugh = Huh?
all:;echo $(foo)
执行“make”将会打印出“Huh?”。整个变量的替换过程时这样的:首先“$(foo)”被替换为“$(bar)”,接下来“$(bar)”被替换为“$(ugh)”,最后“$(ugh)”被替换为“Hug?”。整个替换的过程是在执行“echo $(foo)”是进行的。
其优点是: 这种类型变量的定义时,可以引用其它的之前没有定义的变量(可能在后续部分定义,或者是通过make的命令行选项传递的变量)。看一个这样的例子:
CFLAGS = $(include_dirs) -O
include_dirs = -Ifoo -Ibar
“CFLAGS”会在命令中被展开为“-Ifoo -Ibar -O”。我们可以看到在“CFLAGS”定义中使用到了之后定义的变量“include_dirs”。
[/b]
[b]其缺点是:
(1). 使用此风格的变量定义,可能会由于出现变量的递归定义而导致make陷入到无限的变量展开过程中,最终使make执行失败。
CFLAGS = $(CFLAGS) [b][/b]
发表评论
-
图象显示
2012-01-09 09:41 755图象显示 2009年11月15日 医用图像处理系统是利用 ... -
部分MATLAB代码
2012-01-09 09:41 1702部分MATLAB代码 2009年09 ... -
操蛋的智能仪器
2012-01-09 09:41 678操蛋的智能仪器 2011年0 ... -
matlab
2012-01-09 09:41 1091matlab 2011年05月17日 ... -
警惕网页隐形代码 防范五种系统杀手
2012-01-08 09:25 540警惕网页隐形代码 防范 ... -
VBS教程2
2012-01-08 09:25 597VBS教程2 2011年02月19日 ... -
VBS教程3
2012-01-08 09:25 522VBS教程3 2011年02月19日 下一篇:VBS系列 ... -
IE定期刷新网页的VBS脚本
2012-01-08 09:25 1168IE定期刷新网页的VBS脚 ... -
VBS脚本常用经典代码收集
2012-01-08 09:25 915VBS脚本常用经典代码收集 2010年06月26日 标签 ... -
makefile教程 7
2012-01-07 09:16 584makefile教程 7 2010年09月2 ... -
Makefile学习(三)
2012-01-07 09:16 489Makefile学习(三) 2010年01 ... -
Linux内核Makefile文件
2012-01-07 09:16 570Linux内核Makefile文件 2011年06月06日 ... -
Makefile 简单了解
2012-01-07 09:16 575Makefile 简单了解 2011年11月30日 规则 ... -
广西艺术学院2012年本科招生专业考试通知
2012-01-06 10:06 677广西艺术学院2012年本科招生专业考试通知 2011年12月 ... -
《 中国当代艺术“价值观” 》 高岭 (六) 完
2012-01-06 10:06 543《 中国当代艺术“价值 ... -
剪刀手爱德华(二)镜式文本分析
2012-01-06 10:06 2494剪刀手爱德华(二)镜式 ... -
2012年北京师范大学艺术类本科招生简章
2012-01-06 10:06 6032012年北京师范大学艺术 ... -
天津工业大学2012年艺术类专业招生简章
2012-01-06 10:06 767天津工业大学2012年艺术类专业招生简章 2012年01月0 ... -
中国古代的衣食住行
2012-01-05 13:27 477中国古代的衣食住行 2010年04月06日 对中国古 ... -
关于松
2012-01-05 13:27 534关于松 2011年04月21日 ...
相关推荐
makefile中变量定义符号.doc makefile 变量 = := ?= +=
详细介绍Makefile中变量的用法,例如,变量引用、变量引用的高级用法、如何使用环境变量等等。
makefile中的变量 定义和赋值的文章.
makefile自动化变量解析,编写makefile文件必看,对makefile编写及自动化变量有详细表述。
主要讲述: makefile 中变量的两大特色,变量的引用等;
Makefile自动变量整理收集,自动化变量的取值是根据具体所执行的规则来决定的,取决于所执行规则的目标和依赖文件名
在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,...
makefile详解,有关变量和函数 makefile详解,有关变量和函数的使用
简单GNU Makefile调试工具,详见相关博客
makefile自动化变量.pdf
用于调试时输出变量,记录用于今后调试用
makefile 常用的自动化变量的简单应用, 简述及实例请参考如下文章: https://blog.csdn.net/yujianliam/article/details/132356444
1.4 makefile中使用变量 1.5 让make自动推导 1.6 另类风格的makefile 1.7 清空目标文件的规则 2 Makefile 总述 2.1 Makefile里有什么? 2.2Makefile的文件名 2.3 引用其它的Makefile 2.4 环境变量 MAKEFILES...
Makefile的基本语法包括五个部分:Makefile规则、Makefile规则、Makefile的条件执行、Makefile函数、Makefile库的生成和...在一个完整的 Makefile 中,包含了 5 个东西:显式规则、隐含规则、变量定义、 指示符和注释。
2.4使用变量简化Makefile文件 2.5让make推断命令 2.6另一种风格的Makefile文件 2.7在目录中删除文件的规则 3 编写Makefile文件 3.1Makefile文件的内容 3.2Makefile文件的命名 3.3包含其它的Makefile文件 3.4...
详细介绍makefile的书写, 以及 显示规则,隐含规则,变量定义,指示符和注释的知识
为保证编译正确进行,makefile中需要添加一些路径
二、变量中的变量 25 三、变量高级用法 27 四、追加变量值 30 五、override 指示符 30 六、多行变量 31 七、环境变量 31 八、目标变量 32 九、模式变量 33 Ⅷ)使用条件判断 33 一、示例 33 二、语法 34 Ⅸ)使用函数 ...
中的变量 使用变量 变量的引用 两种变量定义(赋值) 归展开式变量 直接展开式变量 定义一个空格 ”操作符 变量的高级用法 变量的替换引用 变量的套嵌引用 变量取值 如何设置变量 追加变量值 指示符 多行定义 系统环境...
《GNU make中文手册-v3.80》.pdf 这本书对GNU的make工具解析Makefile的规则做了说明,也就是学习Makefile的官方文档,是对书写GNU协议类Makefile的详细...包括make的显示隐式规则介绍,makefile中变量、函数的时使用等