我如何从makefile运行Perl命令

时间:2013-08-06 14:47:02

标签: perl makefile

我想在makefile中运行命令perl -MConfig -e 'print $Config{archlib}',并使用它在LDFLAGS中返回的位置。谁能帮我。我尝试了使用$(shell ..)的不同方法,但它不起作用

我想做这样的事情

PERLPATH = $(shell 'perl -MConfig -e "print $Config{archlib}"')
LDFLAGS += -L/usr/lib64/perl5/CORE

谢谢!

2 个答案:

答案 0 :(得分:6)

在Makefile中,如果您不希望make解释它们,则必须使用双美元符号。但是,避免使用双引号,因为shell会尝试扩展变量。

PERLPATH = $(shell perl -MConfig -e 'print $$Config{archlib}')

答案 1 :(得分:3)

您应该指定它不起作用的含义。在提问时,您应该始终提供您运行的确切命令以及生成的确切错误。

然而,调用shell的问题在于您引用了整个命令。您应该直接放置要运行的命令,就像将其键入shell提示符一样。这意味着您需要在shell脚本周围使用单引号,或者从shell中转义$。然后你需要通过加倍来逃避make $。基本上,您应该让命令在shell提示符下正确运行,然后简单地将该字符串剪切并粘贴到shell函数中。然后将$的每个实例更改为$$以将其从make中删除。

此外,您应该(为提高效率)使用:=代替:

PERLPATH := $(shell perl -MConfig -e 'print $$Config{archlib}')

当然你想要使用这个路径变量:

LDFLAGS += -L$(PERLPATH)/CORE