我正在尝试创建一个匹配多个目录但没有文件的目标。有没有办法将目标明确标记为目录?
例如:
output/%:
mkdir -p $@
也匹配文件,这绝对不是我想要的。
基本上,我有很多包含目录名称的变量,如果它们不存在则需要创建,并且最好的方法是这样做,据我所知,这是:
all: directories other_stuff
directories: $(dir1) $(dir2) ...
$(dir1):
mkdir -p $@
$(dir2):
mkdir -p $@
...
所以,我可以将目录变量作为directories
目标的依赖项重复,但是为我添加的每个目录创建目标似乎有点过分,难以维护。
答案 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。