我们有一个很大的make文件,它定义了许多有用的变量,比如TEST_ENV。我想创建一个位于同一目录下的shell脚本,并想知道是否有任何方法可以使用shell脚本中Makefile中定义的变量。我感兴趣的变量都是这样定义的
TEST_ENV := PATH=/path/to/thing \
CONFDIR=/another/path
或
host_installdir = /still/a/path
我希望脚本使用Makefile的原因是,如果需要在Makefile中更改变量,那么shell脚本将不会过时。
我发现了this相关问题,但希望有一种方法可以做到这一点而无需先运行make。
我考虑过以某种方式在Makefile上使用grep的可能性,但是有些变量是在多行中定义的,这使得它变得棘手且易碎(例如,如果我为3行中定义的变量执行grep -A 3 ,如果稍后添加第4行怎么办?)。
答案 0 :(得分:2)
您可以在makefile中使用Makefile hacks: print the value of any variable中的print-%
目标(的修改版本)来查询它的值。
print-%:
@echo '$(subst ','\'',$($*))'
答案 1 :(得分:1)
TEST_ENV=$(make -qp | awk -F' = ' '$1=="TEST_ENV" {print $2}')
我确定有一些无法处理的边缘情况,但这是一个不错的开始。初步测试显示它处理多行变量。