1
以下規則是什麼意思?製作文件中的多個目標
$(PROGRAM33).o: $(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
是否等於下列
$(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
$(PROGRAM33).o: $(SYSDIR)/%.o
以下規則是什麼意思?製作文件中的多個目標
$(PROGRAM33).o: $(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
是否等於下列
$(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
$(PROGRAM33).o: $(SYSDIR)/%.o
比方說,你有這類的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
。
這似乎是一個靜態模式規則,請參閱此答案http://stackoverflow.com/a/15718701/1741542和[靜態模式規則](http://www.gnu.org/software/make/manual /make.html#Static-Pattern) –
@OlafDietsche: - 謝謝。如果這個評論成爲答案,我會接受它。 –
因爲這不是我的答案,所以我建議你upvote鏈接的答案。 –