2

HD に、名前に括弧が含まれるフォルダーがあります。のように: C:/stuff (really cool)/。このディレクトリでは、make$(wildcard ..)機能が正しく動作しません。

$(wildcard C:/stuff (really cool)/*.jpg)`

まったく結果がないと評価されます。これは、ディレクトリ名の閉じ括弧が関数の閉じ括弧として扱われるためだと思い$(wildcard ..)ます。(andをバックスラッシュでエスケープ)しても機能しません。ディレクトリ名を変数に入れ、ワイルドカード関数を使用することも機能しません。

DIR = C:/stuff (really cool)
all:
    @echo "$(wildcard $(DIR)/*.jpg)"

まったく結果がありません。

括弧を適切にエスケープするにはどうすればよいですか?

4

2 に答える 2

0

実行している環境の種類については言及されていませんが、次の印刷メカニズムは両方とも、通常の DOS プロンプトと msys/mingw から機能します。

DIR = C:/stuff\ (really\ cool)
$(info Files in subdir are: $(wildcard $(DIR)/*.jpg))

all:
    @echo "Files in subdir are: $(wildcard $(DIR)/*.jpg)"

-ed 式を囲む二重引用符は、echomsys/mingw でのみ必要です。

于 2012-11-08T22:37:34.787 に答える
0

以下は機能しません。他の人に警告するために保管されています。

特殊文字は通常、引用符で囲んで「保護」またはエスケープされます。括弧付きの変数を作成するには、二重引用符を使用します。

DIR = "C:/stuff (really cool)"

あなたの場合、最大の問題は、パスが 1 つではなくいくつかの部分に分割される結果となるスペースです。

これは機能します:

GNU Make でスペースをエスケープできる\\ので、 への呼び出しは次のように$wildcardなります

$(wildcard C:/stuff\\ (really\\ cool)/*.jpg)
于 2012-11-08T12:44:17.450 に答える