可见,在上面示例的这个规则中,目标“foo”可以根据变量“$(CC)”值来选取不同的函数库来编译程序。 我们可以从上面的示例中看到三个关键字:ifeq、else和endif。ifeq的意思表示条件语句的开始,并指定一个条件表达式,表达式包含两个参数,以逗号分隔,表达式以圆括号括起。else表示条件表达式为假的情况。endif表示一个条...
“ifeq”,后面的是条件满足的时候执行的,条件不满足忽略;“else”表示当条件不满足的时候执行的部分,不是所有的条件语句都要执行此部分;“endif”是判断语句结束标志,Makefile 中条件判断的结束都要有。 其实"ifneq" 和 "ifeq" 的使用方法是完全相同的,只不过是满足条件后执行的语句正好相反 ifdef 和 ifndef ifde...
“ifeq”之后就是当条件满足make需要执行的,条件不满足时忽略。 “else”之后就是当条件不满足时的执行部分。不是所有的条件语句都需要此部分。 “endif”表示一个条件语句的结束,任何一个条件表达式都必须以“endif”结束。 1.1、ifeq的作用? 此关键字用来判断参数是否相等,格式如下: `ifeq (ARG1, ARG2)' `if...
语句1elseifeq(<arg3>, <arg4>) 语句2else语句3endif 注意:其中<argv1>和<arg3>可以是make变量,比如$(PLATFORM) 形式二: ifneq(<arg1>, <arg2>) 语句1else语句2endif 形式三: ifdef<variable-name> 语句1endif 注意,ifdef只是测试一个变量是否有值,其并不会把变量扩展到当前位置。
条件分支的用法在任何编程语言和脚本以及逻辑中都广泛使用。前文讲述过C语言中预处理的条件编译#ifdef/#if/#elif/#else/#endif用法详解,本文重点讲述Makefile编译脚本中条件分支ifeq/else/endif/else ifeq/ifneq/ifdef/ifndef的具体用法。
在上面的makefile当中定义了一个变量cc,他的值为gcc。在上面的makefile当中ifeq表示如果后边的表达式成立的话,也就是$(cc)的值等于gcc那么就执行后面的语句,否则执行else后面的语句。根据上面makefile的执行结果来看,$(cc)和gcc不相等,因此和我们的期待的结果是一致的。
ifeq($(CC),gcc) $(CC) -o foo $(objects) $(libs_for_gcc) else $(CC) -o foo $(objects) $(noemal_libs) endif 条件语句中使用到三个关键字“ifeq”、“else”、“endif”。其中:“ifeq”表示条件语句的开始,并指定一个比较条件(相等)。括号和关键字之间要使用空格分隔,两个参数之间要使用逗号...
其实"ifneq" 和 "ifeq" 的使用方法是完全相同的,只不过是满足条件后执行的语句正好相反。 上面的例子可以换一种更加简介的方式来写: libs_for_gcc=-lgnu normal_libs=ifeq($(CC),gcc)libs=$(libs_for_gcc)elselibs=$(normal_libs)endif foo:$(objects)$(CC)-o foo$(objects)$(libs) ...
在深入了解ifeq的多条件使用之前,先明确其基础用法。ifeq是Makefile中用于条件判断的指令,语法结构如下: ifeq (条件1, 条件2) # 条件为真时执行的命令 else # 条件为假时执行的命令 endif 当条件1等于条件2时,执行ifeq后面的命令。通过这种基础用法,可以对单一条件进行判断。