SUBDIRS = foo bar baz
.PHONY: dirs $(SUBDIRS)
dirs: $(SUBDIRS)
$(SUBDIRS):
@echo $@
@ls $@
任何人都可以帮我理解这个make-file吗?如果可能,请向我解释每条语句(我们为什么需要它?目的是什么?等)
这个make-file究竟是如何工作的?
它有错误的格式,所以我只能猜测它之前是什么......好吧,它是:
第一行将列表“foo bar baz”分配给名为 SUBDIRS 的变量
第二行是使所有指定目标“语音”的特殊命令-您可以调用“make dirs”或“make foo”,它会找到具有该名称的目标并执行它,但它不是具有该名称的实际文件(像往常一样非虚假目标)
第三个 - 创建名为“dirs”的目标,这取决于 SUBDIRS 变量的值。空格分隔的列表。这个目标没有实际行动
第四行为 SUBRIDS 变量内容创建规则,没有依赖关系。文本的其余部分是必须执行以“制作”此目标的操作(因此,在您的情况下 - 如果您只调用“make”,它将调用“make dirs”(因为它是第一个目标),这取决于foo、bar 和 baz - 所以这些目标将被调用。为了执行这些目标中的每一个,make 将调用 echo 和 ls - 所以最终你会得到这三个目录名称和它们的文件列表)