• 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干的主要的事情。其他的就是一些变量赋值什么的。

  • 相关阅读:
    APIO2015雅加达的摩天楼
    索引(填坑进度:0.1‰)
    树形 DP 笔记 · 一
    「已弃坑」DP 优化的各种姿势 (From CF)
    C++ 的位运算:__builtin, bitset
    LA 7158. ACM-ICPC World Finals 2015 I. Ship Traffic
    LA 7155. ACM-ICPC World Finals 2015 F. Keyboarding
    LA 7150. ACM-ICPC World Finals 2015 A. Amalgamated Artichokes
    LA 7587. ACM-ICPC World Finals 2016 L. Swap Space
    LA 7578. ACM-ICPC World Finals 2016 C. Ceiling Function
  • 原文地址:https://www.cnblogs.com/chineseboy/p/3848833.html
Copyright © 2020-2023  润新知