0

我想perl -MConfig -e 'print $Config{archlib}'在我的 makefile 中运行命令并使用它在我的LDFLAGS. 谁能帮我。我尝试了不同的使用方式,$(shell ..)但没有奏效

我想做这样的事情

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

谢谢!!

4

2 回答 2

6

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

PERLPATH = $(shell perl -MConfig -e 'print $$Config{archlib}')
于 2013-08-06T14:55:04.403 回答
3

您应该指定它不起作用的意思。提问时,您应该始终提供您运行的确切命令和生成的确切错误。

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

你也应该(为了提高效率)使用:=

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

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

LDFLAGS += -L$(PERLPATH)/CORE
于 2013-08-06T14:56:01.097 回答