我想立即在Makefile中扩展shell命令,但我希望shell命令能够访问Makefile中的环境变量。如果我使用$(shell ...),它会立即扩展,但不能访问这些变量。如果我使用反引号,扩展不是立即的,并且稍后会在Makefile中引起问题。我想知道是否有任何方法可以立即扩展反引号,或者将当前环境传递给$(shell)命令。将环境变量导出到Makefile shell
例如,下面的Makefile:
SOME_VAR := some_val
export SOME_VAR
VAR1 := `echo $$SOME_VAR`
export VAR1
VAR2 := `echo $$VAR1`
all:
@echo VAR1=$(VAR1)
@echo VAR2=$(VAR2)
将输出:
~/tmp/t2> make
VAR1=some_val
VAR2=`echo $SOME_VAR`
,我想它打印 “VAR2 = some_val”。真正的例子有点复杂(环境变量是从父级makefile继承而来的,我试图用perl脚本来编辑变量),但原理是一样的。
任何帮助表示赞赏。
嗯......是的,我的例子是有缺陷的。 ..在上面的例子中,VAR1在Makefile中展开,但我需要的是在shell脚本中扩展VAR1。也就是说,我正在调用一个需要访问ENV {'VAR1'}的perl脚本。如果从$(shell ...)调用,脚本将不知道VAR1是什么。我会用一个更好的例子编辑我的问题。谢谢。 – John 2012-03-07 19:00:11
@John,我真的不明白你在这里要做什么。我可以做一些猜测,但我认为如果你编辑你的问题会更快。 – Beta 2012-03-07 19:20:38
我真正想做的事情:我有一个makefile,它应该建立一个目标文件,并根据它所建立的配置设置来命名它。我有一个perl脚本将配置设置转换为名称。为了这个工作,Perl脚本必须有权访问配置设置(必须使用反引号)。这本身就很好,但是这个名字必须在另一个perl脚本中使用。由于名称在第二个脚本运行时未扩展,因此会导致错误。我正在寻找解决方法。 – John 2012-03-07 19:30:50