1、變數
1.1變數型別
a = *** // 延時變數
b ?= *** // 延時變數,只有第一次定義時賦值才成功;如果曾定義過,此賦值無效
c := *** // 即時變數
d += yyy // 如果 d 在前面是延時變數,那麼現在它還是延時變數;
// 如果 d 在前面是立即變數,那麼現在它還是立即變數
編寫如下makefile,a為即時變數,b為延時變數:
執行:說明:
延時變數使用時才賦值,即時變數立即賦值,上面的例子中a、b均賦值為$@
即當前目標檔案,但是a為即時變數賦值時無目標檔案,所以列印出的值為空,b為延時賦值,當echo
列印時才對其賦值,所以b的值為當前目標test
。
1.2 變數的匯出
在編譯程式時,我們會不斷地使用make -c dir
切換到其他目錄,執行其他目錄裡的makefile。如果想讓某個變數的值在所有目錄中都可見,要把它 export 出來。比如cc = $(cross_compile)gcc
,這個 cc變數表示編譯器,在整個過程中都是一樣的。定義它之後,要使用export cc
把它匯出來。
引數說明
-f指定make使用的檔案,不再使用名為makefile或者makefile的檔案
-c指定目錄
指定make檔案為makefile.build
:
make -f makefile.build
切換到其他目錄裡去,比如切換到/a目錄:
make -c a/
-f makefile.build
我們可以指定目標,不再預設生成第乙個目標:
make -c a/
-f makefile.build other_target
當前目錄下含有與makefile中目標名相同的檔案時會發生衝突,例如當前makefile有清理工程的目標clean
,當前目錄下也有同名檔案clean
:
執行make
會提示當前clean
是最新的,這樣我們就無法清理工程了。需要在makefile中加入偽目標。
偽目標使用.phony
進行宣告,phony
本意為假的,故稱為偽目標。
加入宣告後執行make
,可以看到沒有提示了:
makefile的函式基本格式:
$()
其中function
是函式名,arguments
就是函式的引數,函式名和引數以空格分開,引數間使用逗號,
隔開。
呼叫函式時以$()
或者${}
的形式都可以
3.1 foreach
foreach就是對每乙個的意思,原型:
$(foreach var,list,text)
對 list 中的每乙個元素,取出來賦給 var,然後把 var 改為 text 所描述的形式,例如:
objs := a.o b.o
dep_files :=
$(foreach f, $(objs)
, .$(f)
.d)
將objs
中的檔案取出賦給f
,再把f
替換到text選項的.$(f).d
,最終dep_files就是.a.o.d
、.b.o.d
。
3.2 wildcard
wildcard本意為萬用字元,常用於匹配一些模式或者條件。
$(wildcard pattern)
pattern 所列出的檔案是否存在,把存在的檔案都列出來。例如加入srcfile := $(wildcard *.c)
,列出所以.c檔案:
把 text 中符合 pattern 格式的內容, filter(過濾)出來、留下來。
例子:
obj-y := a.o b.o c/ d/
dir :=
$(filter %/, $(obj-y)
) //結果為: c/ d/
3.4 filter-out$(filter-out pattern...,text)
把 text 中符合 pattern 格式的內容, filter-out(過濾)出來、扔掉。
例子:
obj-y := a.o b.o c/ d/
dir :=
$(filter-out %/, $(obj-y)
) //結果為: a.o b.o
3.5 patsubst$(patsubst pattern,replacement,text)
尋找text
中符合格式pattern
的字,用replacement
替換它們。pattern
和replacement
中可以使用萬用字元。
比如:
subdir-y := c/ d/
subdir-y :=
$(patsubst %/, %, $(subdir-y)
) // 結果為: c d
3.6 subst
字串替換函式,原型:
$(subst ,,
)
功能:把字串text>
中的
字串替換成
。
返回:函式返回被替換過後的字串。
舉例:
$(subst ee,ee,feet on the street)
,
把feet on the street
中的ee
替換成ee
,返回結果是feet on the street
。
3.7 strip
名稱:去空格函式——strip。
$(strip
)
功能:去掉
字串中開頭和結尾的空字元。
返回:返回被去掉空格的字串值。
舉例:
$(strip a bc
)
結果為abc
3.8 findstring
$(findstring ,)
名稱:查詢字串函式——findstring。
功能:在字串中查詢字串。
返回:如果找到,那麼返回,否則返回空字串。
示例:
$(findstring a,a b c)
$(findstring a,b c)
第乙個函式返回「a」字串,第二個返回「」字串(空字串) android 零星知識點記錄
一 在按鈕上顯示影象的方式有哪些?解析 本題考查了應聘者對按鈕的靈活應用程度。button是textview 的子類,因此,button與textview一樣,也可以實現 混排效果。除了button之外,android sdk 提供了乙個專門顯示影象的按鈕元件imagebutton.anrdoid ...
東拼西湊 MATLAB一些零星知識
東拼西湊來的matlab一些零星知識,一看就懂,不解釋了 1.if else n 8 if n 1 n n 1elseif n 5 n n 1else n n 2end2.for for i 1 100if i 10break end end3.zeros zeros m,n 生成乙個m n的零矩陣...
css零星高階知識點
display inline block 可設定寬高的行級元素,如果inline block元素本行無法顯示完全的話則整個換行而不是裡面的單詞換行 position 設定參照物,top,left,right,bottom就是相對於參照物的偏移量 poistion relative 仍在文件流,tlr...