博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GNU make manual 翻译( 一百六十)
阅读量:6720 次
发布时间:2019-06-25

本文共 1879 字,大约阅读时间需要 6 分钟。

继续翻译

 

The only restriction on this sort of use of nested variable

references is that they cannot specify part of the name of a function
to be called. This is because the test for a recognized function name
is done before the expansion of nested references. For example,

 

ifdef do_sort

func := sort
else
func := strip
endif

 

bar := a d b g q c

 

foo := $($(func) $(bar))

 

attempts to give `foo' the value of the variable `sort a d b g q c' or

`strip a d b g q c', rather than giving `a d b g q c' as the argument
to either the `sort' or the `strip' function. This restriction could
be removed in the future if that change is shown to be a good idea.

 

You can also use computed variable names in the left-hand side of a

variable assignment, or in a `define' directive, as in:

 

dir = foo

$(dir)_sources := $(wildcard $(dir)/*.c)
define $(dir)_print =
lpr $($(dir)_sources)
endef

 

This example defines the variables `dir', `foo_sources', and

`foo_print'.

 

Note that "nested variable references" are quite different from

recursively expanded variables (*note The Two Flavors of Variables:
Flavors.), though both are used together in complex ways when doing
makefile programming.

 

对于这种对嵌套式变量参照使用的唯一的限制是他们不能指定一个要调用的函数名称的部分。这是因为对一个被认识的函数名称的测试已经在嵌套参照之前完成了。例如,

ifdef do_sort

  func := sort

else
  func := strip
endif

bar := a d b g q c

foo := $($(func) $(bar))

试图给出 `foo' 变量值为 `sort a d b g q c' 或 `strip a d b g q c', 而不是给出`a d b g q c' 作为 `sort' 或者 `strip' 函数的参数。如果未来考虑到改变此限制会更好,也许未来会进行改变。

你可以在一个变量赋值或define指令的左边得左边使用被计算的变量名,就像是这样:

dir = foo

$(dir)_sources := $(wildcard $(dir)/*.c)

define $(dir)_print =
lpr $($(dir)_sources)
endef

这个例子定义了变量 `dir', `foo_sources', 和`foo_print'。

要注意这个 "嵌套变量参照" 是和 递归式扩展变量很不一样的。(*note The Two Flavors of Variables: Flavors.) 尽管它们都在 makefile 编程时以复杂的方式进行使用。 

这里我插入一句,

dir = foo

$(dir)_sources := $(wildcard $(dir)/*.c)

相当于 把  foo目录下的 所有的.c 文件名 获得后,赋值为 foo_sources

后文待续

转载地址:http://xkcmo.baihongyu.com/

你可能感兴趣的文章
批量将Access 2000 的mdb文件导入到SqlServer 2005中
查看>>
基础指令的使用篇3 Linux版
查看>>
Event ID: 36888 error state is 1203 胡杨的博客
查看>>
关照一下IE6这个垃圾png图片背景不透明的bug
查看>>
btrfs文件系统
查看>>
找出Win7 C盘空间被占用的罪魁祸首
查看>>
CCNA之网络互连
查看>>
spring读取.properties文件
查看>>
Android学习 之 Activity和Window之间的关系
查看>>
bash版2048
查看>>
find命令详解(一)
查看>>
firefox下调试wap网页的方法
查看>>
java.lang.Object
查看>>
c++判断和跳转语句
查看>>
Google Glass竞争对手现身,中法合资公司蓝斯特抢先推出增强现实智能眼镜(专业版),民用版2013年年初推出...
查看>>
nagios系列-----Redhat5.4下安装EPEL
查看>>
我的友情链接
查看>>
IOS使用MonkeyTalk自动化测试app的教程
查看>>
Python2.7 ConfigParser
查看>>
路由器和交换机的区别
查看>>