Contiki 2.7 Makefile 文件(二)
二、Makefile.include
1、第一部分
(1)
ifndef CONTIKI
${error CONTIKI not defined! You must specify where Contiki resides}
endif
含义:
如果没有定义CONTIKI变量,make停止运行。
并产生一个致命的错误信息,CONTIKI not defined! You must specify where Contiki resides。
hello-world这个例子在主控Makefile中就定义了CONTIKI变量,所以不会发生这个错误。
注:所以主控Makefile中一定要定义CONTIKI这个变量。
相关知识点:
其中error是一个控制make的函数,函数的调用语句是
$(<function> <arguments>)
函数名和参数名用空格分隔,参数之间用逗号,分隔。函数的返回值可以当做变量来使用,故上述语句将是函数的返回值。
所以${error CONTIKI not defined! You must specify where Contiki resides}语句
会使make停止运行,并返回一个错误信息CONTIKI not defined! You must specify where Contiki resides。
(2)
ifeq ($(TARGET),)
-include Makefile.target
ifeq ($(TARGET),)
${info TARGET not defined, using target 'native'}
TARGET=native
else
${info using saved target '$(TARGET)'}
endif
endif
含义:
在Contiki build system中知道,make命令可以显式定义TARGET:make TARGET=esb
还可以保存默认的TARGET到Makefile.target中:make TARGET=esb savetarget
先判断TARGET变量是否为空,如果不为空,则跳过这一段语句。
如果TARGET为空,则TARGET变量没有显式定义(至少在这之前还没有定义),导入Makefile.target文件,看是否已经保存了默认的TARGET。
是的话(Makefile.target文件存在),则使用Makefile.target文件中默认的TARGET,并提示。
如果没有显式定义,又没有保存默认的TARGET到Makefile.target,那么设置TARGET=native,即本机,并提示。
注:include之前的符号-,加了这个符号之后,即使这条命令出错,make也会继续执行后续的命令。
因为这里Makefile.target可能不存在,但不能影响make继续执行,所以在include命令前添加了 -。
(3)
ifeq ($(DEFINES),)
-include Makefile.$(TARGET).defines
ifneq ($(DEFINES),)
${info using saved defines '$(DEFINES)'}
endif
endif
含义:
在Contiki build system中知道,make命令可以显式定义DEFINES,为c预处理设定任意的变量:make TARGET=esb DEFINES=MYTRACE,MYVALUE=4711
还可以保存默认的DEFINES到Makefile.$(TARGET).DEFINES中:make TARGET=esb DEFINES=MYTRACE,MYVALUE=4711 savedefines
先判断DEFINES变量是否为空,如果不为空,则跳过这一段语句。
如果DEFINES为空,则DEFINES没有显式定义(至少在这之前还没有定义),导入Makefile.$(TARGET).DEFINES文件,看是否已经保存了默认的DEFINES。
如果已经保存了默认的DEFINES的话(Makefile.$(TARGET).DEFINES文件存在),则使用Makefile.$(TARGET).DEFINES文件中默认的DEFINES,并提示。
没有保存的话,则没有任何操作。
注:include之前的符号-,加了这个符号之后,即使这条命令出错,make也会继续执行后续的命令。
因为这里Makefile.$(TARGET).DEFINES可能不存在,但不能影响make继续执行,所以在include命令前添加了 -。
(4)
ifndef HOST_OS
ifeq ($(OS),Windows_NT)
## TODO: detect more specific Windows set-ups,
## e.g. CygWin, MingW, VisualC, Watcom, Interix
HOST_OS := Windows
else
HOST_OS := $(shell uname)
endif
endif
含义:
判断是否有定义HOST_OS变量,如果已经定义了这个变量,则跳过这段语句。
如果没有定义这个变量,判断OS变量的值。
如果OS为Windows_NT,即在Windows系统,设置HOST_OS为windows。
如果OS不为Windows_NT,即不是Windows系统,用shell uname命令获取当前操作系统的名字。
$(shell uname)获取返回值,即操作系统的名字,并赋值给HOST_OS变量。
shell是make内置的函数,shell的参数就是Shell的命令,shell函数将执行Shell命令后的输出作为函数的返回。
在Shell执行uname命令,输出Linux,故shell函数返回Linux。
aaarticlea/png;base64,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" alt="" />
Contiki 2.7 Makefile 文件(二)的更多相关文章
- Contiki 2.7 Makefile 文件(六)
5.第五部分 ifndef CONTIKI $(error CONTIKI not defined! You must specify where CONTIKI resides!) endif if ...
- Contiki 2.7 Makefile 文件(五)
4.第四部分 (1) oname = ${patsubst %.c,%.o,${patsubst %.S,%.o,$(1)}} 自定义函数,$(1)表示调用oname这个函数的第一个参数,patsub ...
- Contiki 2.7 Makefile 文件(四)
3.第三部分 这里我们假设TARGET为native (1) OBJECTDIR = obj_$(TARGET) LOWERCASE = -abcdefghijklmnopqrstuvwxyz UPP ...
- Contiki 2.7 Makefile 文件(三)
2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget ...
- Contiki 2.7 Makefile 文件(一)
一.主控Makefile 这里以hello-world例子为主线,从其工程Makefile开始,解析整个build过程.
- 利用 autoconf 和 automake 生成 Makefile 文件
一.相关概念的介绍 什么是 Makefile?怎么书写 Makefile?竟然有工具可以自动生成 Makefile?怎么生成啊?开始的时候,我有这么多疑问,所以,必须得先把基本的概念搞个清楚. 1.M ...
- linux下使用automake工具自动生成makefile文件
linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf/Au ...
- 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤
一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...
- linux中Makefile文件相关内容
第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,m ...
随机推荐
- MAT使用及OOM分析
知识及工具推荐 1.Android资源监控工具 2.Android内存管理机制 http://blog.csdn.net/hexieshangwang/article/details/47188987
- 版本号控制软件:TortoiseSVN高速上手
百度百科对于SVN的一点解释: TortoiseSVN是Subversion版本号控制系统的一个免费开源client,能够超越时间的管理文件和文件夹.文件保存在中央版本号库,除了能记住文件和文件夹的每 ...
- poj 3307 Smart Sister 打表解因子生成数问题
题意: 给i,求由仅以2,3,5,7为因子的数中第i个是多少. 分析: 打表. 代码: //poj 3307 //sep9 #include <iostream> using namesp ...
- highcharts 绘制图标的JAVASCRIPT 类库 收藏
官方站点 : http://www.highcharts.com 演示样例网址 : http://www.highcharts.com
- VueJS样式绑定v-bind:class
class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. Vue.js v-bind 在处理 class 和 style 时, 专门增强了它 ...
- Android 中保存全局变量
作者:silence鼬.2015年6月28日 在学习Android的时候一直未context的问题认为头疼,由于想做一些工具类,可是又不是四大组件.总要来回传递context.认为非常麻烦,就想全局获 ...
- uva 11885 - Number of Battlefields(矩阵高速幂)
题目连接:uva 11885 - Number of Battlefields 题目大意:给出周长p,问多少种形状的周长为p的,而且该图形的最小包围矩阵的周长也是p,不包含矩形. 解题思路:矩阵高速幂 ...
- MySQL-[Err] 1055 - Expression #1
© 版权声明:本文为博主原创文章,转载请注明出处 问题描述:在MySQL数据库下,执行SQL插入语句报错.错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL ...
- Synchronized修饰静态变量和普通变量的区别
这里主要涉及到类对象(static方法),对象方法(非static方法) 我们知道,当synchronized修饰一个static方法时,多线程下,获取的是类锁(即Class本身,注意:不是实例): ...
- load-on-startup 解释
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" &qu ...