91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

make--變量 條件判斷 函數定義及調用

發布時間:2020-07-24 07:04:13 來源:網絡 閱讀:505 作者:淡淡_小孩 欄目:系統運維

一.變量的高級主題

A.變量值的替換
1.使用指定字符(串)替換變量中的后綴字符(串)
2.語法格式:$(var:a=b) (將a替換成b)
a.替換表達式中不能有任何的空格
b.make中支持使用${}對變量進行取值
示例

src:=a.cc b.cc c.cc
obj:=$(src:cc=o)  

test:
    @echo "obj=>$(obj)"

輸出結果
make--變量 條件判斷 函數定義及調用
由上圖可以看出變量值的替換
B.變量的模式替換
1.使用%保留變量值中的指定字符,替換其它字符
2.語法格式:$(var:a%b=x%y)
a.替換表達式中不能有任何的空格
b.make中支持使用${}對變量進行取值
示例

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

test:
    @echo "obj=>$(obj)"

輸出結果
make--變量 條件判斷 函數定義及調用
C.變量值的嵌套引用
1.一個變量名之中可以包含對其它變量的引用
2.嵌套引用的本質是使用一個變量表示另一個變量
如圖所示
make--變量 條件判斷 函數定義及調用
D.命令行變量
1.運行make時,在命令行定義變量
2.命令行變量默認覆蓋makefile中定義的變量
示例及運行結果
make--變量 條件判斷 函數定義及調用
E.override關鍵字
1.用于指示makefile中定義的變量不能被覆蓋
2.變量的定義和賦值需要使用override關鍵字
示例及運行結果
make--變量 條件判斷 函數定義及調用
F.define關鍵字
1.用于在makefile中定義多行變量
2.多行變量的定義從變量名開始到endef結束
3.可使用override關鍵字防止變量被覆蓋
4.define定義的變量等價于使用=定義的變量
示例及運行結果
make--變量 條件判斷 函數定義及調用

二.條件判斷語句

A.makefile中支持條件判斷語句
1.可以根據條件的值來決定make的執行
2.可以比較兩個不同變量或者變量和常量值
make--變量 條件判斷 函數定義及調用
需要注意的是:條件判斷語句只能用于控制make實際執行的語句;但是,不能控制規則中命令的執行過程
make--變量 條件判斷 函數定義及調用
條件判斷的關鍵字有四種:

關鍵字 功能
ifeq 判斷參數是否相等,相等為true,否則為false
ifneq 判斷參數是否不相等,不相等為true,否則為false
ifdef 判斷變量是否有值,有值為true,否則為false
ifndef 判斷變量是否沒有值,沒有值為true,否則為false

make--變量 條件判斷 函數定義及調用
注意:
1.條件判斷語句之前可以有空格,但不能有Tab字符
2.在條件語句中不要使用自動變量($^,$<)
3.一條完整的條件語句必須位于同一個makefile中
4.條件判斷類似C語言中的宏,預處理階段有效,執行階段無效
5.make在加載makefile時(首先計算表達式的值--賦值方式不同,計算方式不同;根據判斷語句的表達式決定執行的內容)

三.函數定義及調用

A.makefile中支持函數的概念
1.make解釋器提供了一系列的函數供makefile調用
2.在makefile在支持自定義函數實現,并調用執行
3.通過define關鍵字實現自定義函數
B.自定義函數的語法
make--變量 條件判斷 函數定義及調用
深入理解自定義函數
1.自定義函數是一個多行變量,無法直接調用
2.自定義函數時一種過程調用,沒有任何的返回值
3.自定義函數用于定義命令集合,并應用于規則中
示例及運行結果
make--變量 條件判斷 函數定義及調用
注意:$(call func2, mylove, dandanxiaohai)對應于func2中的三個參數,通過call進行調用
C.make解釋器中的預定義函數
1.make的函數提供了處理文件名,變量和命令的函數
2.可以在需要的地方調用函數來處理指定的參數
3.函數在調用的地方被替換為處理結果
預定義函數的調用
make--變量 條件判斷 函數定義及調用
示例及運行結果

.PHONY : test

define func1
    @echo "My name is $(0)"
endef

define func2
    @echo "My name is $(0)"
endef

var1 := $(call func1)
var2 := $(call func2)
var3 := $(abspath ./)
var4 := $(abspath test.cpp)

test :
    @echo "var1 => $(var1)"
    @echo "var2 => $(var2)"
    @echo "var3 => $(var3)"
    @echo "var4 => $(var4)"

make--變量 條件判斷 函數定義及調用
分析:
1.makefile中不支持真正意義上的自定義函數
2.自定義函數的本質時多行變量
3.預定義的call函數在調用時將參數傳遞給多行變量
4.自定義函數是call函數的實參,并在call中被執行

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥江县| 东港市| 新晃| 历史| 钟祥市| 石泉县| 屏南县| 准格尔旗| 沙坪坝区| 巴彦淖尔市| 锦屏县| 大港区| 化州市| 策勒县| 长武县| 巴林右旗| 临泉县| 沙洋县| 陆河县| 道真| 盈江县| 横山县| 罗定市| 阜阳市| 晋中市| 称多县| 十堰市| 淮阳县| 静乐县| 望城县| 海城市| 丘北县| 长垣县| 锡林浩特市| 遵义市| 嘉善县| 区。| 盘锦市| 巨野县| 正安县| 玛纳斯县|