函式的呼叫語法
$(函式名 引數集合)
$
函式名和引數之間用空格隔開,引數之間用, 符號
字串處理函式
字串替換函式,把text中的from字元替換成to,返回被替換後的字串
模式字元換替換函式,查詢text中的單詞(以空格、tab、回車、換行分隔)是否符合模式pattern,如果匹配則以replacement替換。pattern可以包括萬用字元%,表示任意長度的字串。如果replacement包含%,那麼pattern中的哪個%所代表的字串。返回被替換後的字串
去掉空格函式,去掉字串開頭和結尾的空格,返回被去掉空格的字串值
查詢字串函式,在字串in中查詢find字串,如果找到,返回find,否則返回空字串
過濾函式,以pattern模式過濾text中的單詞,保留符合模式pattern的單詞,可以有多個模式。返回符合模式pattern的字串
反過濾函式,以pattern模式過濾text中的單詞,去除符合模式pattern的單詞,可以有多個模式。返回不符合模式pattern的字串
排序函式,給字串list中的單詞排序(公升序),返回排序後的字串(去除相同的)
取膽此函式,取字串text中第n個單詞(從1開始),返回text中第n個單詞。如果n比text中的單詞數要大,返回空字串。
取單詞串函式,從字串text中取從s到e的單詞穿(se為數字)返回字串text從s到e的單詞串,如果s大於text的單詞數,但會空字串,e大於返回text到結束的但此字串。
單詞個數統計函式,統計text中字串中單詞個數
首單詞函式,取字串text中的第乙個單詞
檔名操作函式
獲取目錄函式
獲取檔案函式,返回檔名序列names的非目錄部分
取字尾函式,從檔名序列names中取出各個檔名的字尾
取字首函式,從檔名序列names中去除各個檔名的字首部分
加字尾名函式,把字尾suffix加到names中的每個單詞後面
加字首函式,把字首prefix加到names中的每個單詞前面
連線函式
foreach()函式
類似於c語言的for迴圈
$(foreach ,,)
把引數list中的單詞逐一取出放到引數var所指定的變數中,然後再執行text所包含的表示式。每次text回返回乙個字串,迴圈中,text返回的每個字串以空格分隔。迴圈結束,text返回的每個字串組成的真個字串是返回值。
if()函式
很像gun的make支援的ifeq,語法:
$(if,,)
可選
call()函式
是唯一乙個可以用來建立新的引數化的函式。語法:
$(call ,,,...)
當make執行這個函式時,引數中的變數會被引數依次取代,而expression的返回值就是call()函式的返回值
origin()函式
不操作變數的值,只是告訴使用者這個變數從哪來。
$(origin )
variable是變數名,不是引用。返回值:值說明
undefined
從來沒有定義過
default
預設的定義
environment
環境變數
file
被定義在makefile中
command line
命令列定義的
override
是被override指示符重新定義的
automatic
命令執行中的自動變數
shell()函式
它的引數是作業系統shell的命令。shell()函式把執行作業系統命令後的輸出作為函式返回。
控制make的函式
make提供了一些函式來控制make的執行。
$(error )
$(warning )
error輸出錯誤資訊
warning輸出警告
make的退出碼
有3個退出碼
指定makefile
gun make尋找預設的makefile的規則是在當前目錄下依次找到3個檔案,gunmakefile、makefile和makefile。一旦找到,就開始讀取這個檔案並執行。
make的-f或-file引數
指定目標
一般,make的最終目標是makefile中的第乙個目標,其他目標是這個目標連帶出來的。要完成制定目標,只要在make命令後直接跟目標的名字就行。
任何在makefile中的目標都可被指定成最終目標。但以-或是包含了=的目標除外。
make有乙個變數makecomgoals,這個變數中會存放所指定的終極目標的列表。
make的常用偽目標
目標說明
all該偽目標是所有目標的目標,功能一般是編譯所有的目標
clean
該偽目標的功能是刪除所有被make建立的檔案
install
該偽目標的功能是安裝已編譯好的程式,就是把目標執行檔案複製到指定的目標中
該偽目標的功能就是列出改變過的原始檔
tar該偽目標的功能是把源程式打包備份
dist
該偽目標功能是建立乙個壓縮檔案,一般是把tar檔案壓縮成z檔案或gz檔案#br
check和test
這兩個為目標一般用來測試makefile的流程
檢查規則
make檢查引數
引數說明
-n--just-print
-dry-run
-recon
不執行引數,這些引數值是列印命令(用於除錯)
-t--touch
把目標檔案的時間更新(假編譯)
-q-question
找目標,找到什麼都不做,找不到列印出錯資訊
-w --what-if=
--assume-new=
--new-file=
需要指定乙個引數,一般是原始檔或依賴檔案。make將根據規則推到來執行依賴於這個檔案的命令。
可以和-n引數一起使用,來檢視這個依賴檔案發生的規則命令
make的引數
gun make的引數定義,不同的廠商的make的具體引數還得參考各自的文件。
列出幾個常用的
引數說明
-b-m
忽略和其他版本make的相容性
-b--always-make
認為所有目標都需要更新
-c--directory=
指定讀取makefile的目錄
--debug[=]
輸出mkae的除錯資訊。取值:
a輸出所有
b簡單的
v在b選線級別之上
i輸出所有隱含規則
j輸出執行規則中命令的詳細資訊
m熟讀make讀取makefile、更新,執行的資訊
-d--debug=a
-e--environment-override
環境變數的值覆蓋定義的變數值
-h--help
顯示幫助資訊
-k--keep-going
出錯也不停止執行
-l--just-print
--dry-run
--recon
僅輸出執行過程的命令序列但不執行
mklichee編譯筆記
環境 1 ubuntu16.04 lts x64 2 openjdk 1.7 依賴軟體列表 僅在ubuntu 16.04 x64上測試,其它版本可能不適用 sudo apt get install y git flex bison gperf build essential libncurses5 ...
android編譯筆記
清華大學映象 linaro映象 一 repo sync 是出現錯誤 error cannot fetch platform prebuilts qemu kernel fatal unable to connect to aosp.tuna.tsinghua.edu.cn aosp.tuna.tsi...
busybox編譯筆記
2.解壓 tar jxvf busybox 1.20.1.tar.bz 3.配置 1 進入解壓後的檔案busybox 1.20.1 cd busybox 1.20.1 2 進行預設配置 make defconfig 3 個別修改配置 make menuconfig busybox setting b...