2013-01-18 52 views
3

我正在使用GNU Make來構建靜態html文檔的三個不同版本。如何使用單個Makefile定位多個目錄?

我使用Less作爲CSS預處理器。

我的目錄結構是這樣的:

Makefile 
160x600/style.less 
300x250/style.less 
728x90/style.less 

這是我的Makefile:

LESSC=lessc -x # use -x for debugging 

.PHONY: all clean 

all: 160x600 300x250 728x90 

%.css: %.less 
    $(LESSC) $< > [email protected] 

160x600: 160x600/style.css 
300x250: 300x250/style.css 
728x90: 728x90/style.css 

clean: 
    rm -f 160x600/*.css 
    rm -f 300x250/*.css 
    rm -f 728x90/*.css 

這樣一來,我可以使用make 160x600從style.less建設的style.css。

但我不想明確列出每個目錄的目標規則。相反,我嘗試添加該規則,而這三個目錄特定的國家:

%: %/style.css 

但是,這並不工作。我想從這個例子中清楚我的目標是什麼。有沒有辦法接受任何目錄作爲目標,這樣我只需要列出all:規則中的目錄名稱?

+0

http://stackoverflow.com/questions/7123431/building-multiple-executables-with-similar-rules –

回答

3

使用static pattern rule

res_dirs = 160x600 300x250 728x90 

$(res_dirs): %: %/style.css 
+0

謝謝,第一種方法的工作完美:)合併版本不雖然。 –

+0

@DaniloBargen,對,我明白了爲什麼。不容易合併它,我刪除了第二個變體。 – TMS

相關問題