几个基本概念 1, 终极目标 即make最终要创建的目标,所有其他目标的创建都依赖于此目标,make的执行也是从这里开始 默认的终极目标一般是all 我们可以在文件夹et_iot_source里面的makefile文件中发现all
2, 依赖 规则形如: Target:PREREQUISITES [tab]command Target既是目标,PREREQUISITES既是依赖。 Command是规则的指令 一个make的所有活动都是依赖于终极目标的依赖进行的,如果终极目标的依赖都存在那么,make不展开任何其他活动,只执行终极目标所在规则的指令,如果依赖不存在,那么,make将展开活动,即先重建依赖,即执行规则里面的命令 上面指出了all是终极目标,它后面有一大群依赖。
1、.subdirs 注意到.subdirs所在的规则下的命令,有三点关键。 1、$(foreach d,$(SUBDIRS),$(MAKE) -C $(d);) 将变量所有的值都赋给d,并执行命令$(MAKE)-C $(d) 2、命令$(MAKE) -C$(d) 改变make的工作空间(即工作文件夹),工作空间由变量$(d)指定,$(d)中包含一
个makefile文件,make从这里开始继续执行
上述指令执行的结果就是make的工作环境能够遍历所有的$(SUBDIRS)并在新的
$(SUBDIRS)中重建.subdirs的后续依赖 3、$(SUBDIRS)
如下图,应用了wildcard,下图表示的是找到所有有makefile文件的子目录
2、$(OBJS)
如下图,为所有具有.c后缀的文件重建同名.o文件
其中CSRCS罗列出了所有当前文件夹下面的.c文件,依据如下
3、$(OLIBS)
如下图,其为所有库文件,即.a文件的重建提供了依据
4、$(OIMAGES) 如下图,其为所有image文件即.out的重建提供了依据 你可以在et_app文件夹下的makefile里面发现如下代码 GEN_IMAGES=eagle.app.v6.out
它指出了需要重建的image文件
5、$(OBINS) 如下图,其为所有bin文件,即.bin文件的重建提供了依据 你可以在et_app文件夹下的makefile里面发现如下代码 GEN_BINS= eagle.app.v6.bin
他指出了需要重建的.bin文件
1, 重建各依赖所使用的规则 1、 重建.o文件 如下图所示 1、@mkdir -p $(OBJODIR);
Mkdir命令用于创建文件夹,-p选项表示可以创建多层目录,@表示命令不回显
2、 重建.a文件 如下图所示
我们看到类似于$(1),它是临时变量,用于call函数,见下图
3、 重建.out文件
如下图所示
我们看到类似于$(1),它是临时变量,用于call函数,见下图 |