我想在makefile中运行命令perl -MConfig -e 'print $Config{archlib}'
,并使用它在LDFLAGS
中返回的位置。谁能帮我。我尝试了使用$(shell ..)
的不同方法,但它不起作用
我想做这样的事情
PERLPATH = $(shell 'perl -MConfig -e "print $Config{archlib}"')
LDFLAGS += -L/usr/lib64/perl5/CORE
谢谢!
答案 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