如何从Makefile打印扩展变量?

时间:2019-04-19 15:44:28

标签: makefile

给出node_modules定义为@atlaskit的{​​{1}},如何打印其最终(扩展)值?

运行Makefile会打印libdir,而我想查看libdir = ${exec_prefix}/lib(假设make -pns | grep -e "^libdir" | uniqlibdir = ${exec_prefix}/lib)。

是否可以不将/usr/local/lib附加另一条规则?

2 个答案:

答案 0 :(得分:1)

问题在于您所说的“最终值”。对于递归变量,它是文字字符串$(exec_prefix}/lib。并且仅在变量用${libdir}引用时进行扩展。

但是简单变量会立即展开。因此libdir:=${libdir}make -np将产生所需的结果。但是其他方式是不可能的。

顺便说一句。您可以像这样编写通用的“打印”规则(在GMSL中可见):

print-%:
    @echo value of "$*" is "$($*)"

然后只需执行make print-libdir

答案 1 :(得分:1)

那又怎么样:

printf 'include Makefile\nfoo:\n\t@echo "$(libdir)"\n' | make -f - foo

请注意,最终值的概念很难用make定义。这可能取决于特定的目标...