web-dev-qa-db-ja.com

メイクファイルifeq論理AND

GNU makeファイルのifループ内の複数の条件を確認したい。例を示します。

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

それを行う正しい方法は何ですか?

29
Arun Kumar

値の連結でifeqを使用できます。

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

また、条件関数を使用することもできます。条件関数は、ループで役立つ可能性が高くなります(ifeqはおそらくループで期待することをしないため、1回だけテストされます)。

27
Hasturkun

Hasturkunのソリューションは機能しますが、これを書くための慣用的な方法は次のとおりです。

ifeq ($(TEST_FLAG),TRUE)
ifeq ($(DEBUG_FLAG),FALSE)
# Stuff
endif
endif
25
Jack Kelly