今天在看coolshell的一篇文章 跟我学习写makefile,已经是第三遍了, 有很多地方还是掌握不了
以后还得看,先把今天学到的内容写下来,增强理解
这里介绍两种变量的高级使用方法,第一种是变量值的替换。
-------------这是摘自原文
我们可以替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,其意思是,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串。这里的“结尾”意思是“空格”或是“结束符”。
还是看一个示例吧:
foo := a.o b.o c.o
bar := $(foo:.o=.c)
这个示例中,我们先定义了一个“$(foo)”变量,而第二行的意思是把“$(foo)”中所有以“.o”字串“结尾”全部替换成“.c”,所以我们的“$(bar)”的值就是“a.c b.c c.c”。
另外一种变量替换的技术是以“静态模式”(参见前面章节)定义的,如:
foo := a.o b.o c.o
bar := $(foo:%.o=%.c)
这依赖于被替换字串中的有相同的模式,模式中必须包含一个“%”字符,这个例子同样让$(bar)变量的值为“a.c b.c c.c”。
---------------------这是摘自原文
(1) foo := a.o b.o c.o
bar := $(foo:.o=.c)
(2) foo := a.o b.o c.o
bar := $(foo:%.o=%.c)
这两种方法都能实现变量替换,但是实现的方法不一样
(1) 是在替换 '.o'
(2) 是在替换 '%'
这有点像 C(1,n) = C(n-1,n)
路走的不一样,但是都能到达终点
另需要注意的地方是这里是在括号里面
阅读(557) | 评论(0) | 转发(0) |