LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3535|回复: 1

莫名其妙的GNU make的语法求解

[复制链接]
发表于 2010-8-17 17:33:03 | 显示全部楼层 |阅读模式
本人不才,在看Makefile的时候,看到这样一段make的语法不理解,希望大家帮忙解决

top Makefile中有这样的一段代码:
   1. # clean - Delete most, but leave enough to build external modules
   2. #
   3. clean: rm-dirs  := $(CLEAN_DIRS)
   4. clean: rm-files := $(CLEAN_FILES)
   5. clean-dirs      := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs))

中间的3~4这两行何解?

clean到底是目标还是变量?
rm-dirs是变量还是依赖?

我查看了“GNU make中文手册 ”没有看到类似的语法。
发表于 2010-8-20 17:17:45 | 显示全部楼层
clean: 是目标,但是当有多个clean:目标时,为了构造目标,所执行的命令,后面的会覆盖前面的。
例如:
clean:
        echo AA
clean:
       echo BB
rm-dirs和rm-files都是依赖,在GNUMake遇到第一个clean:时,计算rm-dirs,第二个clean时,计算rm-files,后面还有
clean:
       命令
你没贴出来。而你敲make clean时,需要执行的命令就是这一部分。
这样做的好处是,只有当用户敲make clean时,才需要对rm-dirs和rm-files进行计算求值。

以上个人纯属理解。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表