Makefile关于dir变量的示例问题



你好,我对makefiles有点陌生,我知道一些基本知识,我想我会学习我在网上找到的一个例子。然而,我遇到了一些看起来不对劲的事情,我跳了起来,有人可以帮我解决问题。该示例可在以下链接中找到: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是某种预先定义的GNUMakefile变量,还是我缺少了什么?感谢提供的任何帮助

首先,查找foreach。函数在$(DIRS)中迭代,依次将其中的每个单词分配给dir,并计算$(addprefix $(SOURCEDIR)/, $(dir))。这具有在$(DIRS)中的每个单词前面加上$(SOURCEDIR)/的效果。

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

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

最新更新