1

我正在尝试创建一个匹配多个目录但没有文件的目标。有没有办法将目标明确标记为目录?

例如:

output/%:
    mkdir -p $@

也匹配文件,这绝对不是我想要的。

基本上,我有许多包含目录名称的变量,如果它们不存在则需要创建,据我所知,最好的方法是:

all: directories other_stuff

directories: $(dir1) $(dir2) ...

$(dir1):
    mkdir -p $@
$(dir2):
    mkdir -p $@
...

因此,我可以将目录变量重复为directories目标的依赖项,但是为我添加的每个目录创建目标似乎有点矫枉过正且难以维护。

4

1 回答 1

1

这是一种可能性:

DIR_LIST = $(dir1) $(dir2) $(dir3)

.PHONY: all
all: directories other_stuff

.PHONY: directories  # Note: you should be marking this as phony
directories: $(DIR_LIST)

$(DIR_LIST):
    mkdir -p $@

请参阅http://www.gnu.org/software/make/manual/make.html#Multiple-Targets

于 2012-06-30T16:05:35.910 回答