首页 > 代码库 > contiki Makefile.include 四个关注点<contiki学习之二>

contiki Makefile.include 四个关注点<contiki学习之二>

                                                        Contiki Makefile.include 笔记

 

约定:  makefile 包括Makefile、Makefile.xxx,并不单指Makefile

 

不对makefile的语法进行分析,仅仅关注几个需要点。

 

首先要说明,Makefile.include是被用户的工程目录下的"Makefile"      include之,这个是必须要做的。

 

Makefile.include 从上到下,顺序检索。

 

关注点一

最开始,编译系统会检查用户是否定义了 contiki 源码根目录、检查用户定义的硬件平台、是否使用ipv6、当前编译系统。如下图:

 

 

A  如果用户不在自己的Makefile中定义CONTIKI 这个变量,编译会终止并报错。一般的,应该在工程目录下的Makefile里面定义成这样:

         “       CONTIKI = ../..  “

B  检查用户定义的硬件平台:如果命令选择了”make” 而非 “make TARGET=bse” ,会添加工程目录下Makefile.target这个文件,在这个文件里去找TARGET的定义。如果依然没有定义,系统会默认用户选择了”native” 硬件平台。

C  添加  “Makefile.$(TARGET).defines” 文件,这个文件也是存在于用户工程目录下

D  检查是否启用ipv6

E  检查编译环境系统:是windows 还是linux

 

关注点二

   导入contiki的核心代码、创建obj目标目录。Obj_$(target)目录里当然要存放各种生成的.o文件。如下图:

 

如上图可以看出 contiki/ 下的 core/ 是被无条件包含进来了----无论你是什么平台或者什么应用。当然,也不是绝对的。如果要裁减一些功能,可以修改变量 “CONTIKIDIRS”的值即可<或许有这样的需要>。接着要在工程目录下创建一个放 ”*.o”文件的地方,以前缀”obj_”命名。

 

关注点三

  检查用户是否要导入一些上层 application,如果有,则会导入contiki/apps/ 以及Contiki/platform/$(TARGET)/apps/ 下相对应的makefile文件。检查的机制是以用户的Makefile中是否定义了”APPS”变量为标准,如下图:

”APPS”变量在Makefile中的定义形如下图< 以email应用为例>:

 

关注点四

导入相应的硬件平台下的makefile,比如是CC2530平台的话,那就导入Makefile.cc2530dk这个makefile,如下图:

 

具体就有  “target_makefile” 这个变量来搞定了。

target_makefile := $(wildcard $(CONTIKI)/platform/$(TARGET)/Makefile.$(TARGET) ${foreach TDIR, $(TARGETDIRS), $(TDIR)/$(TARGET)/Makefile.$(TARGET)})

 

OK,上面即是Makefile.include干的主要的事情。其他的就是一些变量赋值什么的。

 

 

Email: newleaves@126.com