Makefile的ifeq邏輯或,邏輯與的變通實現


(1)ifeq的用法

     ifeq ($(變量名), 變量值 )

       ........

     else ifeq ($(..), ..)

       .........

     else

       .........

     endif

(2)最近在學習makefile的過程中遇到需要用ifeq進行邏輯與判斷,但是ifeq並沒有像其他編程語言那樣有 邏輯或(||) 邏輯與(&&) 的符號可用。這時候需要變通一下。

    1)邏輯與變通實現:

    舉例說明:比如需要判斷兩個變量 VALUE1 和 VALUE2 的值都存在才執行某個動作,這需要邏輯與的判斷

    C語言的邏輯:  if ( VALUE1  &&  VALUE2){
                                       do something....

                               } 

   沒有&&符號,我們可以這樣變通:將兩個變量鏈接起來再判斷

    ifneq ($(VALUE1)$(VALUE2),)

           do something....

    endif

 

   如果變量 VALUE1 和 VALUE2 都有具體的值,比如需要進行這樣的判斷: VALUE1 == V1 && VALUE2 == V2, 可以按如下的寫法;

   ifeq ($(VALUE1)_$(VALUE2), V1_V2)    ### 當然中間的下划線 "_" 可以用其他字符代替  

           do something....

    endif


 2) 邏輯或變通實現,同樣是上面的兩個變量

     if( VALUE1 == V1 || VALUE2 == V2 ) {...} 可以用findstring函數做如下變通實現:

     #如果VALUE1或者VALUE2為V1或V2,則findstring 不會返回空。

     ifneq ($(findstring $(VALUE1)$(VALUE2),  V1  V2),)

        do something...

     endif

原文鏈接:https://blog.csdn.net/u010312436/article/details/52459609


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM