2011-06-23 18 views
24

GNU makeファイルのifループで複数の条件を確認したいと思います。ここに例があります:メークファイルifeq論理AND

ifeq ($(TEST_FLAG),TRUE && ($(DEBUG_FLAG),FALSE)) 
true statement 
else 
false statement 
endif 

これは正しい方法はありますか?

答えて

25

ifeqに値の連結を使用することができます。

ifeq ($(TEST_FLAG)$(DEBUG_FLAG),TRUEFALSE) 
    do something 
endif 

それは(おそらくあなたは、それが正確に一度テストされるループに期待しないだろうifeqとして)ループに有用である可能性が高い条件付き関数を使用することも可能です。

+0

先頭のスペースについてあなたはそれをチェックすることができますか、私はあなたの答えを編集する権利ですか? –

+0

@AlBundy:スペースが削除されました。ありがとうございます。 – Hasturkun

19

Hasturkunのソリューションが動作しますが、私はこれを書くための慣用的な方法があると思う:ifeq`は非常に敏感である `のでTRUEFALSE`チェックを_breaks_し、それが動作しませんでし`前に私が先頭にスペースを考える

ifeq ($(TEST_FLAG),TRUE) 
ifeq ($(DEBUG_FLAG),FALSE) 
# Stuff 
endif 
endif 
+0

他の部分は偽の文が実行されるようにしてください –

+0

ifeqの外側にはifeq()... ifeq()... endif else ... ifeq()... endif .. 。endif'。無関係な 'else 'を得る。 – NickSoft

+1

またはを使用したい場合はどうすればいいですか? –