實驗1 :ifneq 比較兩個變數是否相等,makefile 中 命令前可以用 tab 鍵,但是條件判斷語句前不允許用 tab鍵!!!只能用空格鍵!!!!
.phony : test
var1 := a
var2 := $(var1)
# makefile 允許定義空值變數
var3 :=
test:
#注意 ifeq ($(var1),$(var2)) 不是命令,是條件判斷語句,makefile 中 命令前可以用 tab 鍵,但是條件判斷語句前不允許用 tab鍵!!!只能用空格!!!!
ifeq ($(var1),$(var2))
#可執行命令 前面可以用tab鍵
@echo "var1 == var2"
else
@echo "var1 != var2"
endif
mhr@ubuntu:~/work/makefile1$
mhr@ubuntu:~/work/makefile1$ make
var1 == var2
mhr@ubuntu:~/work/makefile1$
實驗2:ifneq 比較變數和乙個空引數即常量空值,makefile 中 命令前可以用 tab 鍵,但是條件判斷語句前不允許用 tab鍵!!!只能用空格鍵!!!!
.phony : test
var1 := a
var2 := $(var1)
var3 :=
test:
#比較變數和乙個空引數即常量空值
ifneq ($(var2),)
@echo "var2 is not empty"
else
@echo "var2 is empty"
endif
mhr@ubuntu:~/work/makefile1$
mhr@ubuntu:~/work/makefile1$ make
var2 is not empty
mhr@ubuntu:~/work/makefile1$
實驗3
ifdef 判斷 變數是否有值
ifndef 判斷 變數是否為空值
.phony : test
var1 := a
var2 := $(var1)
var3 :=
test:
#判斷 var2是否定義了值
ifdef var2
@echo "var2 is not empty"
else
@echo "var2 is empty"
endif
#判斷 var2是否定義了值
實驗4
.phony : test
#變數的普通賦值
var1 :=
var2 := $(var1)
#變數的遞迴賦值,make直譯器在預處理即載入makefile 的時候,
var3 =
var4 = $(var3)
#var3 = 3
test:
ifdef var1
@echo "var1 is defined"
else
@echo "var1 is not defined"
endif
ifdef var2
@echo "var2 is defined"
else
@echo "var2 is not defined"
endif
ifdef var3
@echo "var3 is defined"
else
@echo "var3 is not defined"
endif
ifdef var4
@echo "var4 is defined"
else
@echo "var4 is not defined"
endif
mhr@ubuntu:~/work/makefile1$ make
var1 is not defined
var2 is not defined
var3 is not defined
var4 is defined
mhr@ubuntu:~/work/makefile1$
列印結果很奇怪 var1 2 都正確的識別到了是空值 是未定義的,var3也是別到了是未定義的,但是 var4卻沒有被識別到時空值,明明是被 var3遞迴賦值的啊,應該和var3一樣才對啊。答案是這樣的,var3 var4採用的是遞迴賦值的方式,這意味著make直譯器在載入makefile 的時候,根本就不能判斷出 var4的值應該是什麼,make 直譯器只知道 var3是沒有值的,但是他無法判斷var4是不是有值的,要等到執行這個makefile的時候才知道,make直譯器認為 在遞迴賦值的情況之下, var4 = $(var3) 這樣寫,var4是被定義了具體值的,
8 條件判斷語句
目錄 1.makefile中支援條件判斷語句 2.注意事項 3.條件判斷語句的語法說明 4.條件判斷關鍵字 5.一些工程經驗 6.下面的 的輸出相同嗎?7.小結 條件判斷語句只能用於控制make實際執行的語句 但是不能控制規則命令的執行過程 示例.phony test var1 a var2 var...
3 9 條件判斷語句
判斷條件是否相等用 注意不要寫成 一.單行 if 如果 語句 1 if 條件 then 語句1 語句2 語句 end 2 語句1 語句2 語句 if 條件 二.多行if 語句if 條件 語句1 語句2 語句 elsif 條件 語句1 語句2 語句 else 語句 1 語句 2 語句 end三.unl...
08 條件判斷語句
makefile 中支援條件判斷語句 注意事項 條件判斷語句只能用於控制 make 實際執行的語句,不可以控制規則中命令的執行過程 條件判斷語句的常用格式 if arg1,arg2 其它合法形式 了解 if arg1 arg2 if arg1 arg2 if arg1 arg2 if arg1 ar...