作者:shaoyizhe2006

原作网址:http://blog.csdn.net/shaoyizhe2006/article/details/8012929

条件语句中使用到了三个关键字:“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,ifneq,else,endif”相关推荐

  1. Makefile中的条件编译:ifeq、ifneq、ifdef和ifndef

    前言 在程序的打包环境中,通常会有打包选项,通过选择不同的选项可以打包出适应不同硬件平台和不同功能的程序.其中就涉及条件编译,可以选择不同的库进行链接,也可以在同一个库里选择编译不同部分的代码.ife ...

  2. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  3. MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区

    MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区 1.打开custom分区 2.挂载custom分区 3.OTA升级custom分区 1.打 ...

  4. MATLAB【七】———— matlab 高斯核使用,超像素图像模拟,矩阵转图像,深度相机模型实践实现

    深度模型,图片转稀疏矩阵,稀疏矩阵转图片 %% mat to 2array temp_speckle = ref_speckle; [row_index,col_index,v]=find(temp_ ...

  5. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  6. 浏览器兼容--条件样式,选择符前缀,样式属性前缀

    浏览器兼容--条件样式,选择符前缀,样式属性前缀 2012-12-05 09:20 by greenal, 1570 阅读, 0 评论, 收藏, 编辑 原文地址-- http://www.w3cplu ...

  7. ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例

    计算两个日期间的工作天数,就是剔除了双休日后的天数.( 待考证) DATE_CONVERT_TO_FACTORYDATE HR_HK_DIFF_BT_2_DATES 根据当前时间如何找到上月的第一天和 ...

  8. ansible使用教程(4W字长文,保姆级别教程,建议收藏)

    目录 一.介绍 1.Ansible发展史 2.特性 3.架构 4.ansible的作用以及工作结构 5.ansible主要组成部分 二.安装 1.rpm包安装: EPEL源 2.编译安装: 3.Git ...

  9. hadoop-HA集群搭建,启动DataNode,检测启动状态,执行HDFS命令,启动YARN,HDFS权限配置,C++客户端编程,常见错误

    本篇博文为整理网络上Hadoop-HA搭建后出来的博客,参考网址为:http://blog.chinaunix.net/uid-196700-id-5751309.html 3. 部署 3.1. 机器 ...

  10. 01_JNI是什么,为什么使用,怎么用JNI,Cygwin环境变量配置,NDK案例(使用Java调用C代码),javah命令使用

    1 什么是JNI JNI Java本地开发接口 JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(C/C++) 通过这个协议,java代码就可以调用外部的C/C++代码,外部的C/C++ ...

最新文章

  1. 百度网页分享js代码
  2. java加密文件夹_使用java.util.zip压缩文件夹,支持加密,增加描述
  3. 玩转GIT系列之【如何配置GIT的用户名/密码/密钥】
  4. 【ArcGIS微课1000例】0023:ArcGIS将地理照片(无人机照片)转为点(航迹)案例教程
  5. sqlplus 调试存储过程
  6. Java 用接口实现加减乘除计算器
  7. 什么是语义化的HTML?有何意义?为什么要做到语义化?
  8. js的一些function
  9. python自动化办公要学多久-用 Python 自动化办公能做到哪些有趣或有用的事情?...
  10. SVN服务器端安装过程出现“Custom action InstallWMISchemaExecute failed:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。”
  11. 【转】C++实用技巧(三)
  12. subplot()函数--Matplotlib
  13. oracle的dbv命令,Oracle的DBV命令行工具用法详解
  14. 散列(哈希)函数的python实现。
  15. java创建exchange邮箱_创建Exchange邮箱用户
  16. linux中syscmd用法,M4 宏处理器
  17. 新蓝海之门,或将由数据信托来打开!
  18. (转载)解决电脑同时使用有线网上内网,无线网上外网的冲突
  19. Xshell快速命令集解放生产力
  20. ubuntu18.04换源(阿里无脑版)

热门文章

  1. 计算机网络五层协议及其作用
  2. 福禄克FLUKE DSX2-8000 CH、DSX2-5000 CH、DSX-602 CH简易使用手册
  3. 计算机辅助系统应用于肺部,计算机辅助诊断技术在肺结节中的应用.ppt
  4. 图书分类怎么写用php,PHP开发简单图书后台管理系统实现图书统计
  5. nginx配置简单文件预览
  6. 根据id不让数组push重复的数据
  7. Gnocchi: 1、Gnocchi源码分析
  8. ubuntu连不上网解决
  9. 初级会计有没有必要考呢?
  10. 关于装linux系统时出现进入dracut界面