Makefile8 條件判斷語句

2021-10-01 15:21:04 字數 3362 閱讀 5371

實驗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...