本系列文章均翻译自make官方文档:make Manual,github同步项目:question
不能被Automake所识别。
8.9 value
语法:$(value \*variable\*)
。
variable是变量的名字,而不是其引用。
使用变量的值,值不会被扩展。
FOO = $PATH
all:
@echo $(FOO)
@echo $(value FOO)
第一行输出是ATH,以为* P ∗ 被 扩 展 为 m a k e 变 量 了 ; 第 二 行 输 出 才 是 ∗ P*被扩展为make变量了;第二行输出才是* P∗被扩展为make变量了;第二行输出才是∗PATH*环境变量的值。
note:当变量已经被扩展了,那么该函数不会起作用。
8.9 eval
允许你定义一个新的非常量makefile构造:计算其它变量和函数的结果。
eval的参数被扩展,扩展的结果会被解析为makefile的语法。扩展结果可以定义新的make变量、目标、隐含或明确的规则、etc.
eval的结果总是空字符串。
eval的参数实际上被扩展两次;第一次的扩展结果将在解析为makefile语法的时候再次被扩展。
这意味着你需要提供额外的级别来使用$
字符。