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干的主要的事情。其他的就是一些变量赋值什么的。
contiki Makefile.include 四个关注点<contiki学习之二>的更多相关文章
- contiki makefile框架分析 < contiki学习之一 >
在linux下的工程编译,基本都可以使用makefile这个工具来完成.Contiki OS亦如此,下面分析contiki整个Makefile的框架,对makefile的具体内容暂不做分析.本文依赖于 ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- scrapy爬虫学习系列四:portia的学习入门
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- 深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO)
深度学习课程笔记(十四)深度强化学习 --- Proximal Policy Optimization (PPO) 2018-07-17 16:54:51 Reference: https://b ...
- 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用
目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...
- 设计模式学习(二十四):Spring 中使用到的设计模式
设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
随机推荐
- apache开源项目 -- VXQuery
Apache VXQuery 是一个兼容标准的 XML 查询处理器的实现.主要适合非常大量的 XML 数据处理. 参考: http://www.apache.org/
- python - 回溯继承树 - 自己实现
# -*- coding: utf-8 -*- class test(object): pass class test1(test): pass class test2(test1): pass pr ...
- Android SDK Manager 更新代理配置 ,蛋碎了
启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Andro ...
- 为在MyEclipse中配置Tomcat服务器郁闷的朋友们解决郁闷
是不是很郁闷!为了在MyEclipse配置Tomcat 服务器,竟然弄了你几乎一个上午,最后也没弄成功,也许你本该早注意到Tomcat 5.x要有这个JDK的支持,配置才能成功. 一上午辛辛苦苦也没解 ...
- Top Android App使用的组件 3
8684公交 AdChina:com.adchina:易传媒广告平台 AdsMogo:com.adsmogo:芒果移动广告平台 大姨吗 AChartEngine:org.achartengine:An ...
- php-PHP试题
ylbtech-doc:php-PHP试题 PHP试题 1.A,PHP试题返回顶部 1.{PHP题目}标识符是变量的名称.PHP中的标识符用“$+变量名”来表示.标识符在PHP中遵循下列选项中的那些规 ...
- UI特效--Android利用ViewFlipper实现屏幕切换动画效果
.屏幕切换指的是在同一个Activity内屏幕见的切换,最长见的情况就是在一个FrameLayout内有多个页面,比如一个系统设置页面:一个个性化设置页面.2.介绍ViewFilpper类ViewFl ...
- MyGeneration 数据库驱动为空
重做系统后安装了MyGeneration 但是安装完成后发现驱动中没有驱动信息,查了下网上的解决方案发下下面的可以完美解决,特作备忘: The problem is because of multi ...
- C++ 使用Htmlcxx解析Html内容(VS编译库文件)
1.下载Htmlcxx,http://sourceforge.net/projects/htmlcxx/ 2.解压htmlcxx-0.85.tar.gz 3.打开htmlcxx.vcproj,注意是h ...
- JQuery:各种操作表单元素方法小结
来源:http://www.ido321.com/1220.html 表单元素无处不在,已然成了Web应用不可或缺的一个部分.对表单最最最常见的操作就是获取表单元素的值或者更改表单元素的值.那在JQu ...