Makefile 关于Make的几个基本问题:用数字编写报告
我试图在每次数据更新时重新编译报告。我有以下代码:Makefile 关于Make的几个基本问题:用数字编写报告,makefile,Makefile,我试图在每次数据更新时重新编译报告。我有以下代码: fig1.eps : images/code/fig1.m matlab -nodesktop -nosplash -r 'run ./images/code/fig1.m' 如何匹配所有图形,如fig*.eps。我想检查所有的数据,并更新那些不是最新的 当我运行上面的命令时,它会不断地重新运行。也就是说:生成了fig1.eps。在我再次运行make之后,它应该会给我一条消息“fig1.eps是最新的。”但是它没有,脚本会重新
fig1.eps : images/code/fig1.m
matlab -nodesktop -nosplash -r 'run ./images/code/fig1.m'
make
实现,那么您可以使用模式规则:
fig%.eps : images/code/fig%.m
matlab -nodesktop -nosplash -r 'run ./$<'
但是,这两个选项中的任何一个都要求您指定要创建的所有地物。简单地说,您只需列举:
FIGS = fig1.eps fig2.eps fig5a.eps fig17.1.eps
。。。并指定数字作为默认(或其他)目标的先决条件:
但是,使用GNUmake
,如果Matlab文件按顺序排列并命名,则还可以使用通配符展开或shell命令来获得结果:
FIGS = $(shell cd images/code && ls fig*.m | sed 's/\.m$$/.eps')
.eps
文件的其他规则
all: $(FIGS)
FIGS = $(shell cd images/code && ls fig*.m | sed 's/\.m$$/.eps')