.PHONY在linux下makefile

时间:2012-10-25 08:17:12

标签: makefile gnu gnu-make

SUBDIRS = foo bar baz

.PHONY: dirs $(SUBDIRS)

dirs: $(SUBDIRS)

$(SUBDIRS):

@echo $@

@ls $@

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

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

1 个答案:

答案 0 :(得分:0)

它的格式错误,所以我只能猜到它之前是什么......好吧,它是:

第一行分配列表“foo bar baz”到名为SUBDIRS的变量

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

第三个 - 创建名为'dirs'的目标,该目标取决于SUBDIRS变量的值。以空格分隔的清单。这个目标没有真正的行动

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