以下规则意味着什么?
$(PROGRAM33).o: $(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
是否等于以下
$(SYSDIR)/%.o: storeapp%.cpp
@echo Compiling $< ...
$(PROGRAM33).o: $(SYSDIR)/%.o
答案 0 :(得分: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 $@
这里我们选择只编写一次shell行,分别列出依赖项。
因为在这种情况下,目标(f%.png
)通过(简单的)制作模式与它们的依赖关系(d/p%.xml
)相关,所以我们可以缩短这个样板:
f1.png f2.png f3.png: f%.png: d/p%.png
some-interesting-tool $^ -o $@
这是静态模式规则。比普通模式规则好多了恕我直言。它们具有很好的属性,无论规则中匹配的%
是什么,都可以在配方中以$*
的形式获得。
请注意,目标模式必须与每个源文件匹配,并非不合理。因此,在您的情况下,每个${PROGRAM33}.o
(可能扩展为单个文件)必须与${SYSDIR}/%.o
匹配。