定位多个目录

时间:2012-06-30 15:56:00

标签: makefile

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

例如:

output/%:
    mkdir -p $@

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

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

all: directories other_stuff

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

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

所以,我可以将目录变量作为directories目标的依赖项重复,但是为我添加的每个目录创建目标似乎有点过分,难以维护。

1 个答案:

答案 0 :(得分: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