13
我有,我用它來壓縮圖片生成文件:使用以空格的文件名的Makefile通配符命令
src=$(wildcard Photos/*.jpg) $(wildcard Photos/*.JPG)
out=$(subst Photos,Compressed,$(src))
all : $(out)
clean:
@rmdir -r Compressed
Compressed:
@mkdir Compressed
Compressed/%.jpg: Photos/%.jpg Compressed
@echo "Compressing $<"
@convert "$<" -scale 20% "[email protected]"
Compressed/%.JPG: Photos/%.JPG Compressed
@echo "Compressing $<"
@convert "$<" -scale 20% "[email protected]"
然而,當我在它的名稱空間的圖片,例如Piper PA-28-236 Dakota.JPG
,我得到這個錯誤:
make: *** No rule to make target `Compressed/Piper', needed by `all'. Stop.
我認爲這是在wildcard
命令有問題,但我不知道該怎麼改才能正常工作。
如何修改我的makefile以允許文件名中的空格?
感謝您的幫助,該工程修復的空間中通配符的問題。我將它修改爲'src = $(shell ls Photos | sed's// \\/g; s /.*/ Photos \/\ 0 /')'以允許'JPG'和'jpg'。然而,現在我得到錯誤'make:***沒有規則來製作'all'所需的'Compressed/Piper PA-28-236 Dakota.JPG'。 Stop.'所以現在我需要弄清楚如何讓空間的目標工作。 – iBelieve
我得到它的工作,感謝您的幫助。用'?'替換解決了目標問題,但在結果文件中添加了一個'?'。我最終使用了一個調用函數:'replace = echo $(1)|然後在這個命令中使用它:'@convert'$ <「-scale 20%」\'$(call replace,$ @)''' – iBelieve
我應該接受你的答案還是應該創建自己的答案,詳細說明我所做的所有工作,並顯示最終的Makefile? – iBelieve