.PHONY in linux makefile


SUBDIRS = foo bar baz
.PHONY: dirs $(SUBDIRS)
dirs: $(SUBDIRS)
$(SUBDIRS):
@echo $@
@ls $@

任何人都可以帮助我理解这个制作文件吗? 如果可能的话,请向我解释每个陈述(为什么我们需要它?,目的是什么?等等)

这个制作文件究竟是如何工作的?

它的格式错误,所以我只能猜测它以前是什么......嗯,原来如此:

第一行赋值列表 "foo bar baz" 到名为 SUBDIRS 的变量

第二行是特殊命令,使所有指定的目标"语音" - 您可以调用"make dirs"或"make foo",它会找到具有该名称的目标并执行它,但它不是具有此名称的实际文件(如通常的非虚假目标)

第三个 - 创建名为"dirs"的目标,该目标取决于 SUBDIRS 变量的值。 空格分隔的列表。 这个目标没有实际行动

第四行为 SUBRIDS 变量内容创建规则,没有依赖关系。文本的其余部分是必须执行的操作才能"制作"这个目标(所以,在你的情况下 - 如果你只调用"make",它将调用"make dirs"(因为它是第一个目标),这取决于foo,bar和baz-所以这些目标将被调用。 要执行这些目标中的每一个,make将调用echo和ls - 所以最终你会得到这三个目录名和他们的文件列表)

最新更新