一、ifeq
1、举例
根据 $(CC) 取值不同,执行不同的处理逻辑
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
- ifeq:表示条件语句的开始,并指定一个条件表达式。表达式包含两个参数,以逗号分隔,表达式以圆括号括起,表示判断表达式与某个值是否相等
- else:表示条件表达式为假的情况
- endif:表示一个条件语句的结束,任何一个条件表达式都应该以endif结束
2、条件表达式的语法
// 表示条件关键字,如“ifeq”
<conditional-directive>;
<text-if-true>;
else
<text-if-false>;
endif
二、ifneq(与 ifeq 相反)
举例:
比较参数“arg1”和“arg2”的值是否相同。如果不同,则为真
ifneq (<arg1>;, <arg2>;)
三、ifdef
举例:
如果变量 variable-name; 的值 非空,表达式为真。否则,表达式为假。当然,variable-name; 同样可以是一个函数的返回值。注意,ifdef只是测试一个变量是否有值,其并不会把变量扩展到当前位置
ifdef <variable-name>;
四、ifndef(与 ifdef 相反)
举例:
ifndef <variable-name>;