【发布时间】:2017-05-08 11:11:53
【问题描述】:
根据 Gnu Make Manual 和GNU Makefile - Pattern rule with multiple targets with one dependency ignores all targets but the first,具有多个目标的模式规则的行为与正常规则不同。后者相当于多条规则,每条规则只有一个目标。
因为我正在设计一个像make这样的工具,我想知道这种不同行为背后的基本原理,为什么两种规则不使用相同的逻辑?
编辑:
例如,我有一个 Makefile:
%.md %.ps: %.tex
echo "rule 1"
doc1.tar.gz: doc1.md doc1.ps
echo "rule 2"
doc2.md doc2.ps: doc2.tex
echo "rule 3"
doc2.tar.gz: doc2.md doc2.ps
echo "rule 4"
make doc1.tar.gz 给我:
echo "rule 1"
rule 1
echo "rule 2"
rule 2
但是doc2.tar.gz 给了我:
echo "rule 3"
rule 3
echo "rule 3"
rule 3
echo "rule 4"
rule 4
我的问题是:为什么规则 1 不能像规则 3 一样运行两次?如果这样的模式规则运行多次会有什么问题?
【问题讨论】:
标签: makefile