何かを構築した後、 でmake
終わるすべてのファイルを.cache.{js,woff}
サブフォルダーに移動します。
(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)
問題は、実行時にファイル名としてmake
解釈され*.cache.{js,woff}
、動的なものではないようで、もちろん明示的な名前を持つファイルは存在しないことです*.cache.{js,woff}
。上記のコマンドを使用して、フォルダーに移動してシェルから手動で移動すると、問題なく動作します。
これはグロビングに関係していることは理解していますが、これを修正する方法がわかりません。
答え1
{...}
は中括弧展開用の bash 固有の構文ですが、make は/bin/sh
デフォルトで の代わりにを使用しますbash
。
info make
、セクション5.3.2より:
シェルとして使用されるプログラムは、変数から取得されます
SHELL
。この変数が makefile に設定されていない場合は、プログラムが/bin/sh
シェルとして使用されます。
bash を使用して Makefile 内のシェル構造を解析する場合は、先頭に次のコードを追加します。
SHELL := /bin/bash