【发布时间】:2022-01-22 21:12:38
【问题描述】:
我有两个文件 1.gv 和 2.gv 是 Graphviz 文件。
我根据自己的理解编写了这个 Makefile:
DOT=dot
FORMAT=svg
SRC=$(wildcard *.gv)
OUT=$(subst .gv,.$(FORMAT),$(SRC))
all: $(OUT)
$(OUT): $(SRC)
$(DOT) -T$(FORMAT) $^ -o $@
.PHONY: clean
clean:
rm -f $(OUT)
清理似乎工作,唯一的问题似乎是它运行:
dot -Tsvg 1.gv 2.gv -o 1.svg
dot -Tsvg 1.gv 2.gv -o 2.svg
代替:
dot -Tsvg 1.gv -o 1.svg
dot -Tsvg 2.gv -o 2.svg
【问题讨论】:
-
你需要一个规则来制定一个目标。这:
$(OUT): $(SRC)扩展为:1.svg 2.svg: 1.gv 2.gv。这不是针对一个目标的规则。使用模式规则,如下所示,将允许您创建一个匹配具有该模式的任何目标的规则。