zoukankan      html  css  js  c++  java
  • feq 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”相反

    ifeq (${BLOCK(NAME)}, $(filter ${BLOCK(NAME)}, xxxx))
    BLOCK(PREV_IPO_NUM)= xxxx
    BLOCK(PREV_IPO_DB)= xxx
    BLOCK(PREV_IPO_DIR)= xxx
    endif

  • 相关阅读:
    Arduino学习笔记10
    Arduino学习笔记07
    Arduino学习笔记6
    Arduino学习笔记5
    Arduino学习笔记4
    Arduino学习笔记3
    linux下库文件的编程
    学习编程语言究竟学什么
    Arduino学习笔记2---数字温度计
    Arduino学习笔记0---开发板的了解
  • 原文地址:https://www.cnblogs.com/lelin/p/12759758.html
Copyright © 2011-2022 走看看