关于 dir 变量的 Makefile 示例问题

Makefile example issue regarding dir variable

你好,我对 makefile 有点陌生,我知道基础知识,我想我会完成一个我在网上找到的例子。但是我 运行 遇到了一些看起来不对的事情,我希望有人能帮助解决问题。该示例可在以下 link 中找到: https://riptutorial.com/makefile/example/21376/building-from-different-source-folders-to-different-target-folders

我的具体问题是关于以下行:

SOURCEDIRS = $(foreach dir, $(DIRS), $(addprefix $(SOURCEDIR)/, $(dir)))

我想知道当 dir 变量没有被分配到任何地方时,makefile 如何计算 $(dir)? dir 是某种预定义的 GNU Makefile 变量还是我遗漏了什么? 感谢任何帮助,谢谢

首先,查找foreach。该函数遍历 $(DIRS),将它的每个单词依次分配给 dir,并计算 $(addprefix $(SOURCEDIR)/, $(dir))。这具有在 $(DIRS).

中的每个单词前添加 $(SOURCEDIR)/ 的效果

然后查找addprefix。这个函数可以自己完成所有的工作,所以 foreach 在这个例子中是完全没有必要的。这就足够了:

SOURCEDIRS = $(addprefix $(SOURCEDIR)/,$(DIRS))