uboot学习之二----主Makefile学习之三----静默编译

第45-54行:

45 # Deal with colliding definitions from tcsh etc.
46 VENDOR=
47
48 #########################################################################
49 # Allow for silent builds
50 ifeq (,$(findstring s,$(MAKEFLAGS))) //判断findstring函数是否为空

51 XECHO = echo //如果有就echo
52 else
53 XECHO = : //如果没有就为空,即不打印
54 endif
55

这一段 主要是关于静默编译的内容

uboot允许静默编译,开启静默编译主要是通过判断ifeq (,$(findstring s,$(MAKEFLAGS))) 。

使用方法:在编译时,使用make -s -会作为MAKEFLAGS传给Makefile.

关于makefile知识点:

条件判断:主makefile50行 :ifeq (,$(findstring s,$(MAKEFLAGS)))

《跟我一起学Makefile》第42页:

条件表达式的语法为:

<conditional-directive>

<text-if-true>

endif

以及

<conditional-directiv>

<text-if-ture>

else

<text-if-false>

endif

其中<conditional-directiv>表示条件关键字,如“ifeq”。

第一个关键字ifeq:

ifeq(<arg1>, <arg2>)

ifeq ‘arg1‘ ‘arg2‘
ifeq “arg1” ‘arg2‘

ifeq ‘arg1‘ ”arg2”

ifeq ”arg1” “arg2”

比较参数“arg1” 和“arg2”的值是否相同。相同为真。

第二个关键字ifneq:

ifneq (<arg1>, <arg2>)

ifneq ‘arg1‘ ‘arg2‘

ifneq “arg1” ‘arg2‘

ifneq ‘arg1‘ ”arg2”

ifneq ”arg1” “arg2”

比较参数“arg1” 和“arg2”的值是否相同。不同为真。

第三个关键字ifdef:

ifdef <variable-name>

如果变量的值非空,那么表达式为真,否则为假。

findstring函数

函数调用语法:

$(<funciton> <arguments>)

或者

${<function> <arguments>}

$(findstring <find>, <in>)

功能:在字串<in>中查找<find>字串。

返回:如果找到,那么返回<find>,否则返回空字符串。

所以这里ifeq (,$(findstring s,$(MAKEFLAGS)))

这里的意思就是如果findstring函数的返回值为空。如果为空,那么ifeq函数的两个参数相等,条件判断为真。执行<text-if-true>.

时间: 2024-10-14 14:58:16

uboot学习之二----主Makefile学习之三----静默编译的相关文章

uboot学习之二----主Makefile学习之四----两种编译方法:原地编译和单独输出文件夹编译

第57-123行: 57 # 58 # U-boot build supports producing a object files to the separate external 59 # directory. Two use cases are supported: 60 # 61 # 1) Add O= to the make command line 62 # 'make O=/tmp/build all' 63 # 64 # 2) Set environement variable

uboot学习之二----主Makefile学习之一----版本号 u_boot_version(U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSION)) (24-29行)

BSP支持包(https://yunpan.cn/cqB5i8LCAMzhM  访问密码 c425,解压后/uboot目录下的Makefile) VERSION = 1      //主版本号PATCHLEVEL = 3    //修补版本号SUBLEVEL = 4     //次版本号EXTRAVERSION =    //附加信息,一般默认为空,我们可以自己设置U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL).$(EXTRAVERSI

uboot学习之二----主Makefile学习之二----环境变量之:主机的操作系统和主机架构(HOSTOS、HOSTARCH)(31-43行)

HOSTARCH := $(shell uname -m | \    sed -e s/i.86/i386/ \ -e s/sun4u/sparc64/ \ -e s/arm.*/arm/ \ -e s/sa110/arm/ \ -e s/powerpc/ppc/ \ -e s/ppc64/ppc/ \ -e s/macppc/ppc/) HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ sed -e 's/\(cygwin

GUI学习之二十三——QDialog学习总结

今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户的短期通信. QDialogs是可以有返回值的(字体.颜色等),有默认按钮(确认.取消和关闭). 二.对话框的种类 对话框可以是模态或非模态的对话框 模态对话框也分两种 应用程序级别(exec()),当该种对话框出现时,用户必须首先对该对话框进行操作,直至关闭后才能访问程序中的其他窗口(注意是访问而

JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)

一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 1 <Connector port="8080" protocol="HTTP/1.1" 2 connect

NLog学习笔记二:深入学习

配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束查询): 应用程序的标准配置文件(通常为applicationname.exe.config) 应用程序所在目录中的applicationname.exe.nlog文件 应用程序所在目录中的NLog.config文件 NLog.dll所在目录中的NLog.dll.nlog文件 环境变量NLOG_GL

webrtc学习———记录二:canvas学习

参考资料: http://bucephalus.org/text/CanvasHandbook/CanvasHandbook.html#getcontext2d https://developer.mozilla.org/zh-CN/docs/Web/HTML/Canvas http://www.w3school.com.cn/html5/html5_canvas.asp https://developer.mozilla.org/zh-CN/docs/Web/API/HTMLCanvasEle

Jetsever开源项目学习(二)架构学习—— Jetserver internal details and how it works.

Jet Server - architecture and internal details This section outlines how data flows through jet server, the important classes and interfaces and also which ones need to be extended by users to write their game logic, receive events and so on. If you

寒假学习(二)spark学习

spark的安装很简单(教程) 1. 计算级数 请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入. 例 如 , 若 q 的 值 为 50.0 , 则 输 出 应 为 : Sn=50.416695 . 请 将 源 文 件 保 存 为 exercise2-1.scala,在REPL模式下测试运行,测试样例:q=1时,Sn=2:q=30时,Sn=30.891459: q=50 时,Sn=50.416695.