uboot的顶层makefile文件中一段不明白

时间:2021-09-09 12:43:46
uboot的 Makefile文件中有如下一段

# Deal with colliding definitions from tcsh etc.
VENDOR=

#########################################################################
# Allow for silent builds
ifeq (,$(findstring s,$(MAKEFLAGS)))                
XECHO = echo
else
XECHO = :
endif

首先我发现在比较新的uboot,比如uboot2010等版本的makefile文件中增加了这段内容,这段主要起到什么作用呢?

另外分析(findstring s,$(MAKEFLAGS))) 在$(MAKEFLAGS) 环境变量中找到s字符串,如果没有找到XECHO = echo  ,这段的真实含义到底做什么呢? 
MAKEFLAGS这个变量最初如何赋值呢?

11 个解决方案

#1


控制编译时的信息显示
MAKEFLAGS在makefile的前边会有吧

#2


如果在MAKEFLAGS中找到s那么就是静默编译,否则打印编译信息。
在Linux顶层Makefile中,在version下面的第一条就是给MAKEFLAGS赋值的,可以去看看!UBOOT的是一个意思!
还有以.slient开始的标号也是静默编译的!

#3


请问什么是静默编译? 为什么有这个? 怎么实现静默编译?

#4


就是编译过程中不打印东西
这几条语句的作用是控制是否在编译是打印日志
如果在MAKEFLAGS里找到s 则不打印

#5


看看MAKEFLAGS是什么,怀疑与日志功能相关

#6


XECHO = echo 的时候是静默编译,echo不是显示信息吗,那么这个变量在后面如何实现静默编译呢?而为什么XECHO = :就是打印信息呢? 而为什么不是空呢? 两点代表什么意思?

#7


在 linux shell 里面,冒号后面的命令不执行。
所以在非静默编译的时候 XECHO = echo
在静默编译的时候 XECHO = :

#8


学习了

#9


同学习 ,

#10


冒号后面的命令不执行?  不会不执行吧? 静默编译不是仅仅不打印信息而已吗? 

#11


: 和 # 是一个道理的。
echo 没有了不就不打印?

#1


控制编译时的信息显示
MAKEFLAGS在makefile的前边会有吧

#2


如果在MAKEFLAGS中找到s那么就是静默编译,否则打印编译信息。
在Linux顶层Makefile中,在version下面的第一条就是给MAKEFLAGS赋值的,可以去看看!UBOOT的是一个意思!
还有以.slient开始的标号也是静默编译的!

#3


请问什么是静默编译? 为什么有这个? 怎么实现静默编译?

#4


就是编译过程中不打印东西
这几条语句的作用是控制是否在编译是打印日志
如果在MAKEFLAGS里找到s 则不打印

#5


看看MAKEFLAGS是什么,怀疑与日志功能相关

#6


XECHO = echo 的时候是静默编译,echo不是显示信息吗,那么这个变量在后面如何实现静默编译呢?而为什么XECHO = :就是打印信息呢? 而为什么不是空呢? 两点代表什么意思?

#7


在 linux shell 里面,冒号后面的命令不执行。
所以在非静默编译的时候 XECHO = echo
在静默编译的时候 XECHO = :

#8


学习了

#9


同学习 ,

#10


冒号后面的命令不执行?  不会不执行吧? 静默编译不是仅仅不打印信息而已吗? 

#11


: 和 # 是一个道理的。
echo 没有了不就不打印?