2009-08-07 84 views
2

我需要編寫一個快速生成文件來構建我的所有項目。這是C++代碼,我正在使用gmake。遞歸gmake問題

說我有一個目錄列表,我想要CD到每個,發出gmake命令,如果成功,轉到下一個等等。如果我只需鍵入gmake命令,它做正確的事 -

我通過看gmake manual

.PHONY: all clean dirs $(DIRS) 

dirs: $(DIRS) 

$(DIRS): \n\t 
    $(MAKE) -C [email protected] 

它適用於「全」目標熟這一點。但如果我做了清潔,它什麼都不做。

我學習使用gmake,我去,所以我肯定做一些愚蠢的在這裏:)

感謝您的幫助。

回答

8

爲了遞歸地製作除第一個目標以外的其他東西(我猜所有的都是你的第一個目標),你需要給這個子目標做一個構想。您可以使用MAKEFLAGS和MAKECMDGOALS變量進行此操作。

例如:

$(DIRS): 
     $(MAKE) -C "[email protected]" $(MAKEFLAGS) $(MAKECMDGOALS) 

您的規則並沒有沿着目標名稱傳遞,例如干淨,所以子製造沒有工作要做(因爲一切都已經建成)。

+0

是的,確實如此。謝謝。 – 2009-08-07 16:30:02