2012-06-30 102 views
1

我想創建一個匹配多個目錄但沒有文件的目標。有什麼方法可以將目標明確標記爲目錄嗎?目標多個目錄

例如:

output/%: 
    mkdir -p [email protected] 

匹配文件爲好,這絕對不是我想要的東西。

基本上,我有一個包含需要,如果不存在,要創建的目錄名,要做到這一點的最好辦法很多變數,據我發現是這樣的:

all: directories other_stuff 

directories: $(dir1) $(dir2) ... 

$(dir1): 
    mkdir -p [email protected] 
$(dir2): 
    mkdir -p [email protected] 
... 

因此,我可以重複目錄變量作爲directories目標的依賴關係,但是爲添加的每個目錄創建目標似乎過度且很難維護。

回答

1

這是一個可能性:

DIR_LIST = $(dir1) $(dir2) $(dir3) 

.PHONY: all 
all: directories other_stuff 

.PHONY: directories # Note: you should be marking this as phony 
directories: $(DIR_LIST) 

$(DIR_LIST): 
    mkdir -p [email protected] 

http://www.gnu.org/software/make/manual/make.html#Multiple-Targets

+0

哦,那很好:)謝謝! –

+0

你是否也知道,如何創建一個匹配目錄內任何目標文件的目標?這似乎並不奏效:'output /%。o:' –

+2

依賴於檢查先決條件的順序是一種不好的做法,因爲它可能無法在並行構建('make -j')上按預期工作。 –