Makefile 25個函式列表與舉例

2021-06-18 01:04:57 字數 3765 閱讀 7058

字串處理函式

1、subst

$(subst ee,ee,feet on the street),

把「feet on the street」中的「ee」替換成「ee」,返回結果是「feet on the street」。

2、patsubst

$(patsubst %.c,%.o,x.c.c bar.c)

把字串「x.c.c bar.c」符合模式[%.c]的單詞替換成[%.o],返回結果是「x.c.o bar.o」

3、strip

$(strip a b c )

把字串「 a b c 」去到開頭和結尾的空格,結果是「a b c」。

4、findstring

$(findstring a,a b c) 

在a b c中找a

$(findstring a,b c)

第乙個函式返回「a」字串,第二個返回「」字串(空字串)

5、filter

sources := foo.c bar.c baz.s ugh.h

foo: $(sources)

cc $(filter %.c %.s,$(sources)) -o foo 

找以 .c ,.s結尾的檔案

$(filter %.c %.s,$(sources))返回的值是「foo.c bar.c baz.s」。

提取字串

file := adb efg hij

$(filter db, $file)  返回adb 

6、filter-out

objects=main1.o foo.o main2.o bar.o

mains=main1.o main2.o

$(filter-out $(mains),$(objects)) 返回值是「foo.o bar.o」。

7、sort

$(sort foo bar lose)返回「bar foo lose」 。

8、word

$(word 2, foo bar baz)返回值是「bar」。

9、wordlist

$(wordlist 2, 3, foo bar baz)返回值是「bar baz」。

10、words

$(words, foo bar baz)返回值是「3」。

11、firstword

$(firstword foo bar)返回值是「foo」。

檔名操作函式

1、dir

$(dir src/foo.c hacks)返回值是「src/ ./」。

2、notdir

$(notdir src/foo.c hacks)返回值是「foo.c hacks」。

3、suffix

$(suffix src/foo.c src-1.0/bar.c hacks)返回值是「.c .c」。

4、basename

$(basename src/foo.c src-1.0/bar.c hacks)返回值是「src/foo src-1.0/b

ar hacks」。

5、addsuffix

$(addsuffix .c,foo bar)返回值是「foo.c bar.c」。

6、addprefix

$(addprefix src/,foo bar)返回值是「src/foo src/bar」。

7、join

$(join aaa bbb , 111 222 333)返回值是「aaa bbb 111 222 333」。

其他函式

1、foreach 函式

迴圈函式

names := a b c d

files := $(foreach n,$(names),$(n).o)

上面的例子中,$(name)中的單詞會被挨個取出,並存到變數「n」中,「$(n).o」每次根據「$(n)」計算出乙個值,這些值以空格分隔,最後作為foreach函式的返回,所以,$(files)的值是「a.o b.o c.o d.o」。

2、if 函式 

3、call函式

call函式是唯一乙個可以用來建立新的引數化的函式。你可以寫乙個非常複雜的表示式,這個表示式中,你可以定義許多引數,然後你可以用call函式來向這個表示式傳遞引數。

例如:reverse = $(1) $(2)

foo = $(call reverse,a,b)

那麼,foo的值就是「a b」。當然,引數的次序是可以自定義的,不一定是順序的,如:

reverse = $(2) $(1)

foo = $(call reverse,a,b)

此時的foo的值就是「b a」。

4、origin函式

origin函式不像其它的函式,他並不操作變數的值,他只是告訴你你的這個變數是**來的

$(origin )

下面,是origin函式的返回值:

「undefined」

如果從來沒有定義過,origin函式返回這個值「undefined」。

「default」

如果是乙個預設的定義,比如「cc」這個變數,如果是乙個環境變數,並且當makefile被執行時,「-e」引數沒有被開啟。

「file」

如果這個變數被定義在makefile中。

「command line」

如果這個變數是被命令列定義的。

「override」

如果是被override指示符重新定義的。

「automatic」

5、shell函式

如果是乙個命令執行中的自動化變數。

contents := $(shell cat foo)

files := $(shell echo *.c)

控制make的函式

1、error

示例一:

ifdef error_001

$(error error is $(error_001))

endif

示例二:

err = $(error found an error!)

.phony: err

err: ; $(err)

示例一會在變數error_001定義了後執行時產生error呼叫,而示例二則在目錄err被執行時才發生error呼叫。

2、warning

這個函式很像error函式,只是它並不會讓make退出,只是輸出一段警告資訊,而make繼續執行。

MySQL函式列表

mysql中,提供了豐富的函式,簡化了使用者對資料的操作 包括數學函式 字串函式 日期和時間函式 條件判斷函式 加密函式等 abs x 返回x的絕對值 sqrt x 返回x的非負2次方根 mod x,y 返回x被y除后的餘數 ceiling x 返回不小於x的最小整數 floor x 返回不大於x的...

C cmath函式列表

using abs 絕對值 using acos 反余弦 using acosf 反余弦 using acosl 反余弦 using asin 反正弦 using asinf 反正弦 using asinl 反正弦 using atan 反正切 using atan2 y x的反正切 using a...

GoC函式列表

p.fd length 筆前進length步 p.bk length 筆後退length步 p.rt angle 筆右轉angle度 p.lt angle 筆左轉angle度 p.c color 設定筆的顏色,有三種引數形式,第一種是乙個引數,可為0 15 0黑 1紅 2深藍 3綠 4青藍 5黃 6...