【发布时间】:2011-08-15 15:42:31
【问题描述】:
我正在尝试学习 makefile。 我有以下 Makefile:
ctx/%.ctx: rst/%.rst
texlua rst_parser.lua $< $@
pdf: ctx
mkdir -p pdf
cd pdf; context ../ctx/main.ctx
ctx: rst
mkdir -p ctx
.PHONY: clean
clean:
rm -f pdf/*.log pdf/*.aux pdf/*.pgf pdf/*.top pdf/*.tuc
如您所见,所有三个先决条件都是目录; rst、ctx 和 pdf。先决条件递归到“rst”。我将手动编辑ctx 中的文件和rst 中的文件,这些文件将转换为ctx 中的文件。
我应该怎么做才能使make 使pdf :) 如下方式:
- 查看
ctx中的某些内容和/或rst中的某些内容是否发生了变化。 - 如果仅更改了
ctx中的某些内容,则为pdf,否则为ctx。 - 如果
rst中的某些内容发生了变化,请使用第一条规则在ctx中制作相应的文件,然后制作ctx,然后再制作pdf。
我现在的问题是我不知道如何告诉make “为了在rst 中的文件更改时生成ctx,使用第一条规则(ctx/%.ctx: ctx/%.rst)来生成每个匹配的文件在ctx 中来自rst 中对应的一个”
【问题讨论】:
-
为什么一个普通的
make能读懂我的想法并表现得像make pdf?
标签: makefile