GNU Make手冊閱讀筆記(6)– 第七章

來源:互聯網
上載者:User
第七章  Makefile條件執行
1.     




條件判斷的基本文法


一個簡單的不包含“
else
”分支的條件判斷語句的文法格式為:



CONDITIONAL-DIRECTIVE


TEXT-IF-TRUE


endif



包含“
else
”的複雜一點的文法格式為:



CONDITIONAL-DIRECTIVE


TEXT-IF-TRUE


else


TEXT-IF-FALSE


endif

1)
    


關鍵字“
ifeq


ifeq
(ARG1, ARG2)

2)      


關鍵字“
ifneq


ifneq
(ARG1, ARG2)

3)      


關鍵字“
ifdef


ifdef VARIABLE-NAME

    如果變數“
VAEIABLE_NAME
”的值非空(在
Makefile
中沒有定義的變數的值為空白),那麼運算式為真
。否則,運算式為假。


對於“
ifdef
”需要說明的是:
ifdef
只是測試一個變數是否有值,不會對變數進行替換展開來判斷變數的值是否為空白。對於變數“
VARIABLE-NAME
”,除了“
VARIABLE-NAME=
”這種情況以外,使用其它方式對它的定義都會使“
ifdef
”返回真。就是說,即使我們通過其它方式(比如,定義它的值引用了其它的變數)給它賦了一個空值,“
ifdef
”也會返回真。我們來看一個例子


1


bar =


foo = $(bar)


ifdef foo


frobozz = yes


else


frobozz = no


endif



2


foo =


ifdef foo


frobozz = yes


else


frobozz = no


endif



1
中的結果是:“
frobozz
= yes
”;而例
2
的結果是:“
frobozz
= no
”。其原因就是在例
1
中,變數“
foo
”的定義是“
foo
= $(bar)
”。雖然變數“
bar
”的值為空白,但是“
ifdef
”判斷的結果是真。

4)
     


關鍵字“
ifndef


ifndef VARIABLE-NAME

 

命令列前的“
+
”的意思是告訴
make
,即使
make
使用了“
-t
”參數,“
+
”之後的命令都需要被執行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.