0

makefile でコマンドを実行perl -MConfig -e 'print $Config{archlib}'し、それが返す場所を使用したいLDFLAGS. 誰でも私を助けることができますか?色々な使い方を試し$(shell ..)ましたがダメでした

私はこのようなことをしたい

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

ありがとう!!

4

2 に答える 2

6

makeMakefile では、ドル記号を解釈したくない場合は、2 つのドル記号を使用する必要があります。ただし、シェルは変数を展開しようとするため、二重引用符は避けてください。

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

それが機能しなかったとはどういう意味かを指定する必要があります。質問するときは、実行した正確なコマンドと生成された正確なエラーを常に提供する必要があります。

ただし、の呼び出しの問題はshell、コマンド全体を引用していることです。シェルプロンプトに入力するのと同じように、実行したいコマンドを直接入力するだけです。つまり、シェル スクリプトを一重引用符で囲むか、シェル$からエスケープする必要があります。$次に、make を 2 倍にしてエスケープする必要があります。基本的に、コマンドをシェル プロンプトで適切に実行する必要があります。次に、その文字列をカット アンド ペーストしてshell関数に貼り付けます。次に、すべてのインスタンスを$toに変更$$して、make からエスケープします。

また、(効率のために):=代わりに使用する必要があります:

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

そしてもちろん、このパス変数を使用したい:

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