2012-03-12 54 views
0

問題是關於並行製作W/GNU makefile。如何爲並行製作的相同目錄處理不同的目標

給定如下的文件夾結構,目標是提供一個makefile,它支持並行發佈/調試/清理。

項目文件夾結構:

foo 
    +-foo1 
    +-foo2 
    +-foo3 

生成文件可能是某事像:

SUBDIR = foo1 foo2 foo3 
.PHONY $(SUBDIR) release debug clean 
release: $(SUBDIR) 
$(SUBDIR): 
    $(MAKE) -C [email protected] release 

debug: $(SUBDIR) 
#below is incorrect. $(SUBDIR) is overriden. 
$(SUBDIR): 
    $(MAKE) -C [email protected] debug 
.. 

Sub目錄列表中的並行決策設置爲僞目標。但它丟失了原始目標的信息(發佈,調試,清理等)。

一種方法是後綴目錄的名稱並在命令中恢復它,但它很奇怪。另一種方法可能是使用變量,但不知道如何解決。

問題是: 如何編寫支持具有不同目標(釋放/調試/清除)並行的目錄規則?

任何提示是不勝感激。

+0

沒關係。我通過傳遞變量來解決問題。調試:\ n \ n $(MAKE)-C $ @ sub_target = debug – maplesfive 2012-03-12 03:08:12

回答

0

在命令行設置變量肯定有效。您還可以使用MAKECMDGOALS(請參閱GNU使手動):

$(SUBDIR): 
     $(MAKE) -C [email protected] $(MAKECMDGOALS) 
相關問題