2014-03-27 46 views
1

以下規則是什麼意思?製作文件中的多個目標

$(PROGRAM33).o: $(SYSDIR)/%.o: storeapp%.cpp 
       @echo Compiling $< ... 

是否等於下列

$(SYSDIR)/%.o: storeapp%.cpp 
       @echo Compiling $< ... 

$(PROGRAM33).o: $(SYSDIR)/%.o 
+2

這似乎是一個靜態模式規則,請參閱此答案http://stackoverflow.com/a/15718701/1741542和[靜態模式規則](http://www.gnu.org/software/make/manual /make.html#Static-Pattern) –

+0

@OlafDietsche: - 謝謝。如果這個評論成爲答案,我會接受它。 –

+0

因爲這不是我的答案,所以我建議你upvote鏈接的答案。 –

回答

1

比方說,你有這類的Makefile:

f1.png: d/p1.xml 
f2.png: d/p2.xml 
f3.png: d/p3.xml 

f1.png f2.png f3.png: 
    some-interesting-tool $^ -o [email protected] 

這裏我們選擇寫殼線只有一次,掛牌依賴關係分開。

因爲在這種情況下,目標(f%.png)通過與它們的依賴(d/p%.xml)(簡單的頭腦)做模式,我們可以因此縮短這個樣板:

f1.png f2.png f3.png: f%.png: d/p%.png 
    some-interesting-tool $^ -o [email protected] 

這是一個靜態模式規則。比普通模式規則好得多恕我直言。他們有一個很好的屬性,無論%匹配的規則,在配方中可用$*

請注意,並非不合理的是,目標模式必須與每個源文件匹配。因此,您的情況下,每個${PROGRAM33}.o(可能擴展爲單個文件)必須匹配${SYSDIR}/%.o

相關問題