DATE: 2019-2-22
前言
條件分支的用法在任何編程語言和腳本以及邏輯中都普遍使用。前文講述過C語言中預處理的條件編譯#ifdef/#if/#elif/#else/#endif用法詳解,本文重點講述Makefile編譯腳本中條件分支ifeq/else/endif/else ifeq/ifneq/ifdef/ifndef的具體用法。linux
一、參考
https://blog.csdn.net/turkeyzhou/article/details/8613589
https://blog.csdn.net/u010312436/article/details/52459609
https://blog.csdn.net/tanyjin/article/details/66970155
https://blog.csdn.net/kwinway/article/details/79980616android
二、Makefile中條件分支的不一樣使用形式
使用條件判斷,能夠讓make根據運行時的不一樣狀況選擇不一樣的執行分支。條件表達式能夠是比較變量的值,或是比較變量和常量的值。ios
2.一、基本語法
條件表達式的語法爲:編程
<conditional-directive>; <text-if-true>; endif 以及: <conditional-directive>; <text-if-true>; else <text-if-false>; endif
其中<conditional-directive>;表示條件關鍵字,如「ifeq」。這個關鍵字有四個,以下:編程語言
形式一:測試
ifeq(<arg1>, <arg2>) 語句1 else 語句2 endif
或者:spa
ifeq(<arg1>, <arg2>) 語句1 else ifeq(<arg3>, <arg4>) 語句2 else 語句3 endif
注意:其中<argv1>和<arg3>能夠是make變量,好比$(PLATFORM).net
形式二:命令行
ifneq(<arg1>, <arg2>) 語句1 else 語句2 endif
形式三:code
ifdef <variable-name> 語句1 endif
注意,ifdef只是測試一個變量是否有值,其並不會把變量擴展到當前位置。
形式四:
ifndef <variable-name> 語句1 endif
2.二、多條件使用:單分支多個宏變量組合
ifeq ($(PLATFORM), $(findstring) $(PLATFORM), linux x86 android ios) 語句1 endif
三、ifdef, ifeq 使用及辨析
#能夠用命令行傳遞變量 RELEASE = abc #ifdef 變量名稱不能加$() ifdef RELEASE $(warning RELEASE defined) else $(warning RELEASE not defined) endif #ifeq 後面參數要叫$(), 由於是值引用, 值能夠爲數值或字符串 ifeq ($(RELEASE),abc) $(warning RELEASE eqal abc) else $(warning RELEASE not equal abc) endif all: @echo ok!