-1

我正在尝试制作一个 Makefile。我有一个名为图片的文件夹和一个名为拇指的文件夹。图片中的图片有pic1.jpg、pic2.jpg、pic3.jpg等。我想从这些图片中制作缩略图并将它们放在拇指文件夹中。这是我尝试过的:

infiles = $(wildcard pictures/*.jpg) 
outfiles = $(subst pictures,thumbs, $(infiles))
all : $(outfiles)
       convert -thumbnail 100 pictures/*.jpg thumbs/*.jpg

有人知道我在做什么错吗?

4

1 回答 1

2

您的 makefile 说“这里是如何创建板条箱all;它可以在所有outfiles文件都是最新的情况下制作”,但您没有说明如何创建这些文件。

更惯用的方法是为每个单独的文件指定一个依赖项,然后 Make 可以从那里获取它。换句话说,就像你所做的那样说all取决于,但随后分别指定每个如何取决于其各自的.outfilesoutfileinfile

infiles = $(wildcard pictures/*.jpg) 
outfiles = $(subst pictures,thumbs, $(infiles))

.PHONY: all
all : $(outfiles)

thumbs/%.jpg: pictures/%.jpg
    mkdir -p thumbs
    # Guesswork here; probably update the command
    convert -thumbnail 100 $< $@

.PHONY声明all仅标记为目标名称,而不是仅在不存在或比其依赖项旧时才需要构建的文件。

于 2018-12-07T10:24:59.500 回答