zoukankan      html  css  js  c++  java
  • ifeq ifneq ifdef ifndef

    条件语句中使用到了三个关键字:“ifeq”、“else”和“endif”。其中:

    1.        “ifeq”表示条件语句的开始,并指定了一个比较条件(相等)。之后是用圆括号括包围的、使用逗号“,”分割的两个参数,和关键字“ifeq”用空格分开。参数中的变量引用在进行变量值比较时被展开。“ifeq”之后就是当条件满足make需要执行的,条件不满足时忽略。

    2.        “else”之后就是当条件不满足时的执行部分。不是所有的条件语句都需要此部分。

    3.        “endif”表示一个条件语句的结束,任何一个条件表达式都必须以“endif”结束。

    此关键字用来判断参数是否相等,格式如下:

    `ifeq (ARG1, ARG2)'

    `ifeq 'ARG1' 'ARG2''

    `ifeq "ARG1" "ARG2"'

    `ifeq "ARG1" 'ARG2''

    `ifeq 'ARG1' "ARG2"'替换展开“ARG1”和“ARG1”后,对它们的值进行比较

    通常我们会使用它来判断一个变量的值是否为空(不是任何字符)。参数值可能是通过引用变量或者函数得到的,因而在展开过程中可能造成参数值中包含空字符(空格等)。一般在这种情况时我们使用make的“strip”函数来对它变量的值进行处理,去掉其中的空字符。格式为:

    ifeq ($(strip $(foo)),)

    TEXT-IF-EMPTY

    endif

    即就是在“$(foo)”中存在若干前导和结尾空格,“TEXT-IF-EMPTY”也会被作为Makefile需要执行的一部分。

    关键字“ifneq”实现的条件判断语句和“ifeq”相反

    关键字“ifdef”

    关键字“ifdef”用来判断一个变量是否已经定义。格式为:

    `ifdef VARIABLE-NAME'

    如果变量“VAEIABLE_NAME”的值非空(在Makefile中没有定义的变量的值为空),那么表达式为真

    例1:

    bar =

    foo = $(bar)

    ifdef foo

    frobozz = yes

    else

    frobozz = no

    endif

     

    例2:

    foo =

    ifdef foo

    frobozz = yes

    else

    frobozz = no

    endif

    例1中的结果是:“frobozz = yes”;而例2的结果是:“frobozz = no”。

    关键字“ifndef”实现的功能和“ifdef”相反

  • 相关阅读:
    springMVC将处理的后的数据通过post方法传给页面时,可能会出现乱码问题,下面提出解决post乱码问题的方法
    div3的e题有点水呀
    鸽天的放鸽序列---牛客网
    CodeForces
    NOIP2009 压轴---最优贸易
    在加权无向图上求出一条从1号结点到N号结点的路径,使路径上第K+1大的边权尽量小
    好久没写题解了
    皇宫看守问题(带权树上独立集)
    树的最大独立集合问题
    拓扑排序+动态规划
  • 原文地址:https://www.cnblogs.com/dchipnau/p/4985929.html
Copyright © 2011-2022 走看看