Makefile中的變數值的替換 一

2021-10-14 20:45:01 字數 1226 閱讀 5891

1.使用指定字串替換變數中的字尾字元(串)

格式:$(var:a=b)或$

注意:替換表示式中不能有空格】

例:

src := acc bcc ccc

obj := $(src:cc=o)

test:

@echo "obj => $(obj)"

make test輸出結果:

ao bo co

2.變數的模式替換

使用%保留變數值中的指定字串,替換替他字元

格式:$(var:a%b=x%y)或$

注意:替換表示式中不能有空格

例:

src := a123b.c a234b.c ajkhb.c

obj := $(src:a%b.c=x%y)

test:

@echo "obj => $(obj)"

分析:原串 a123b.c按照a%b.c進行模式匹配的時候a與b.c中間的123就會被%匹配到,後邊就會被保留下來,a和b.c就會被x和y取代。其他的類似。

make test執行結果:

x123y x234y xjkhy

3.規則中的模式替換

targets:target-pattern:prereq-pattern

command1

command2

意義:通過target-pattern從targets中匹配子目標,再通過prereq-pattern從子目標生成依賴,進而構成完整規則。

例:

objs := func.o main.o

$(objs): %.o : %.c

gcc -o $@ -c $^

分析:上述第二行,通過%.o匹配objs中的func.o,通過func.c生成依賴,再匹配main.o生成main.c依賴。

上述第二行會被make程式解析成

func.o: func.c

gcc -o $@ -c $^

main.o: main.c

gcc -o $@ -c $^

Makefile列印變數值

makefile第二講 列印出內容和使用變數 摘要 echo 開始生成最終執行檔案,請稍候.這一句便是將一條資訊輸出到終端,為何前邊有個 符號呢?有了這個符號該命令本身就不會輸出到終端 不理解,自己去掉或者加上 符號試試 實驗證明,字串可以不加引號。看到 objs main.o 了嗎?這就是變數的定...

除錯makefile 檢視其中的變數值

作業系統 ubuntu10.04 在編譯uboot,linux kernel的時候,都需要用到makefile,那麼makefile的執行流程,其中的各個變數的值該怎麼獲取呢?執行命令 make p xx 在對應的路徑 下,執行makefile,p,print data base print mak...

變數值的修改

我們先來看一段程式 sublist 3 matrix sublist 3 matrix 0 0 matrix 0 0 x x x x x 上圖程式中,我們建立了乙個二維矩陣matrix,只是想去修改matrix元素,但是結果卻是第一行全部被修改了。這是什麼原因呢,如下圖所示 當我們利用乘法的形式來建...