我正在尝试使用带有makefile的GNUplot生成一些图形。我希望目录中的每个* .plt文件都能通过GNUplot运行,但是我看不到让它工作。 到目前为止,这是我的makefile:
all: %.tex
%.tex: %.plt
<tab> gnuplot < $<
如果我单独指定一个.plt文件,配方工作正常,但是我希望它在我生产它们的时候拿起我的新图。
编辑: 我想我现在已经开始工作了:
# plots all files in the folder with .plt extensions
SOURCES = $(wildcard *.plt)
TARGETS = $(SOURCES:.plt=.tex)
all: $(TARGETS)
%.tex: %.plt
gnuplot < $<
有人可以确认我的推理(如下)是否正确?
以前我没有为all
指定任何文件(我对%有点困惑)。现在通过使用通配符拾取任何.plt文件来分配变量SOURCES
(为什么在使用.plt而不是* .plt?时它不起作用)。分配SOURCE
后,会设置TARGETS
变量,现在all:
已指定要构建的文件。现在运行匹配规则。
答案 0 :(得分:5)
all : %.tex
将无效,因为目标名称中没有百分比,换句话说,它不是模式规则。
使用wildcard
function获取所有.plt
个文件的列表,并添加all
对这些文件的依赖,并将扩展名替换为.tex
:
PLT_FILES := $(wildcard *.plt)
TARGETS := $(PLT_FILES:%.plt=%.tex)
all: $(TARGET)
%.tex: %.plt
gnuplot < $<