2017-03-17 96 views
2

其中包含css文件和目錄中每個文件的目錄我想在同一個目錄中單獨縮小文件.min.cssmakefile忽略已刪除的文件名

因此,例如my.css在同一目錄中被縮小爲my.min.css

首先我想

css/*.css: 
    uglifycss [email protected] > $(subst .css,.min.css,[email protected]) 

make -B yeaaa Victorie酒店的工作:d

但同樣做make -B之後我每次都得到一個新的單獨的文件導致my.min.cssmy.min.min.cssmy.min.min.min.css

然後我試圖

.PHONY: clean 

css/*.css: clean 
    uglifycss [email protected] > $(subst .css,.min.css,[email protected]) 

clean: 
    -rm css/*.min.css 

DOH!清理後仍然記得它在第一個地方刪除的文件,導致再次產生一個my.min.min.min.css文件

我該如何告訴make停止做my.min.min.min.css

(品牌:GNU使3.81 OSX)

回答

1

首先得到後綴名爲.css的所有文件的列表:

ALL := $(wildcard *.css) 

然後刪除的後綴.me.css文件:

NEW := $(filter-out %.me.css,$(ALL)) 

和後綴添加到剩餘的文件:

ME := $(patsubst %.css,%.me.css,$(NEW)) 

然後添加這些文件作爲先決條件默認目標,並添加你自己的食譜,建立這些文件,在這種情況下,一個簡單的回聲:

%.me.css: 
    echo 123 > [email protected] 

default: $(ME) 

相比,你的做法,這具有的好處,你不不必使用標誌-B,因爲只有需要構建的文件才被構建。因此,調用make是通過簡單地調用make而沒有任何目標或標誌(假設makefile命名爲makefile或Makefile)來完成:

make