I’m trying to produce some graphs using GNUplot with a makefile. I would like for every *.plt file in the directory to be run through GNUplot, however I can’t see to get it to work.
Here’s my makefile so far:
all: %.tex
%.tex: %.plt
<tab> gnuplot < $<
The recipe is working fine if I specify a .plt file individually but I want it to pick up my new plots as I produce them.
EDIT:
I think I’ve got it working now:
# plots all files in the folder with .plt extensions
SOURCES = $(wildcard *.plt)
TARGETS = $(SOURCES:.plt=.tex)
all: $(TARGETS)
%.tex: %.plt
gnuplot < $<
Can someone confirm whether my reasoning (as follows) is correct?
Previously I hadn’t specified any files for all (I’m a little confused by %). Now assigning the variable SOURCES by picking up any .plt files using the wildcard (why doesn’t it work when using .plt instead of *.plt?). Having assigned SOURCE, the TARGETS variable is then set, now all: has files specified to build. and the matching rule is now run.
all : %.texwon’t work because there is no percent in the target name, in other words, it is not a patter rule.Use
wildcardfunction to get the list of all.pltfiles and add analldependence on these files with the extension replaced by.tex: