【问题标题】:multiple targets in make filemake文件中的多个目标
【发布时间】:2014-03-27 08:30:56
【问题描述】:

以下规则是什么意思?

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

是否等于下面的

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

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

【问题讨论】:

标签: makefile gnu-make


【解决方案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) 通过(头脑简单的)make 模式与其依赖项 (d/p%.xml) 相关,因此我们可以缩短此样板:

f1.png f2.png f3.png: f%.png: d/p%.png
    some-interesting-tool $^ -o $@

这是一个静态模式规则。恕我直言,比普通模式规则要好得多。它们有一个很好的属性,即无论规则中匹配的 % 是什么,都可以在配方中作为 $* 使用。

请注意,目标模式必须与每个源文件匹配,这并非毫无道理。因此,在您的情况下,每个 ${PROGRAM33}.o(可能扩展为单个文件)都必须与 ${SYSDIR}/%.o 匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2011-10-28
    • 1970-01-01
    • 2019-03-29
    • 2023-03-06
    • 2013-03-25
    相关资源
    最近更新 更多