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>.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM