首页 > 解决方案 > GNU Make 只执行 10 条规则

问题描述

我有一个生成文件,可以将一些文件转换为 PDF。现在makefile看起来像这样:

PDFS = file_A.pdf file_B.pdf <snip> file_K.pdf

all : convert

file_%.pdf:
    $(CONVERTER_COMMAND) $< -o $@

file_A.pdf : file1.ext
file_B.pdf : file2.ext
<snip>
file_K.pdf : file11.ext

convert : $(PDFS)
.PHONY : convert

以上是大体结构(可惜我无法展示实际文件)。

对于前 10 个文件,运行make convert就像一个魅力,即它生成file_A.pdf直到file_J.pdf. 然而,最后一个file_K.pdf,永远不会生成。如果我将它的规则移动到它生成的列表的顶部,但是现在列表中的最后一个不再生成。

如果我make file_K.pdf只声明文件是up to date,即使它还不存在。

有任何想法吗?或者关于如何解决类似问题的任何替代想法?

标签: makefilegnu-make

解决方案


最后一个先决条件语句之后的行上是否有杂散的 TAB 字符(在file_K.pdf : file11.ext上面的列表中)?

您应该尝试运行make -d并查看它对未构建的目标的说明。


推荐阅读