7.Makefile中的條件語句
本系列文章均翻譯自make官方文件:make Manual,github同步專案:question
不能用於控制recipes。
warning:不能在Makefile.am中使用。
例子
libs_for_gcc = -lgnu
normal_libs =
foo: $(objects)
ifeq ($(CC),gcc)
$(CC) -o foo $(objects) $(libs_for_gcc)
else
$(CC) -o foo $(objects) $(normal_libs)
endif
帶有tab
才能算作recipe,這裡的條件語句被當作文字來看待。
語法
conditional-directive-one
text-if-one-is-true
else conditional-directive-two
text-if-two-is-true
...
else
text-if-one-and-two-are-false
endif
else可省略。
測試變數是否相等,有五種條件conditional-directive
的寫法:
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
測試變數是否為空值(類似於""):
ifeq ($(strip $(foo)),)
text-if-empty
endif
測試變數是否不等,也有五種寫法:
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
ifdef variable-name
ifdef獲取變數的名字作為引數,而不是變數值的引用。如果變數的值是非空的,則執行text-if-true
。
variable-name是可擴充套件的,所以其可以是一個擴充套件成一個變數名的變數或函式。
note:ifdef只測試值是否為非空。所以除了像這樣定義的變數:foo =
,都會返回真。
如果想測試空值,使用ifeq。
例如:
bar =
foo = $(bar)
ifdef foo
frobozz = yes
else
frobozz = no
endif
結果是:frobozz = yes
foo =
ifdef foo
frobozz = yes
else
frobozz = no
endif
結果是:frobozz = no
ifndef variable-name
與ifdef相反。
make是在讀取Makefile的時候判斷條件的,所以不能在條件的測試中使用自動變數,因為直到recipes執行時他們才被定義。參考自動變數
相關文章
- oracle中的條件語句Oracle
- 條件語句
- php中條件語句的使用整理PHP
- GO 條件語句Go
- javaScript條件語句JavaScript
- SqlServer中迴圈和條件語句SQLServer
- 04.條件語句
- Go:條件控制語句Go
- Python if else條件語句Python
- Python-條件語句和迴圈語句Python
- Swift 條件語句講解Swift
- python-條件控制(if語句)Python
- 學習Rust 條件語句Rust
- 條件判斷語句 if case
- PL/SQL 條件控制語句SQL
- Python中if條件判斷語句怎麼用?Python
- Java中的條件判斷語句-動力節點Java
- 【譯】JavaScript 中寫好條件語句的五個技巧JavaScript
- Go的條件判斷語句的使用Go
- Python if else條件語句詳解Python
- Python 入門 :基本條件語句Python
- Python條件語句與迴圈Python
- JS中if語句何時認為條件的求值是falseJSFalse
- 「譯」寫好JavaScript條件語句的5條守則JavaScript
- Python學習筆記3(條件語句+迴圈語句)Python筆記
- Python:條件分支 if 語句全講解Python
- shell程式設計之條件語句程式設計
- C 語言教程:條件和 if...else 語句
- 鴻蒙開發TypeScript語言:【條件語句】鴻蒙TypeScript
- makefile--if條件判斷語句的語法與使用
- 優化 JS 條件語句的 5 個技巧優化JS
- AWK if(條件)語句與迴圈簡介
- 深入理解mongodb查詢條件語句MongoDB
- Go 條件語句 - Go 學習記錄Go
- 02 shell程式設計之條件語句程式設計
- C語言中迴圈語句while 中判斷條件出現 || 和 && 的區別C語言While
- 【Golang 基礎系列十】Go 語言 條件語句之ifGolang
- MySQL條件判斷IF,CASE,IFNULL語句詳解MySqlNull