前言

在程序的打包环境中,通常会有打包选项,通过选择不同的选项可以打包出适应不同硬件平台和不同功能的程序。其中就涉及条件编译,可以选择不同的库进行链接,也可以在同一个库里选择编译不同部分的代码。ifeq、ifneq、ifdef和ifndef在逻辑上就相当于C语言的if条件语句,通过判断某个条件,程序将走不同的分支。

ifeq和ifneq:

1.常见用法:
ifeq ($(plat), hi3516cv500)CROSS = arm-himix200-linux-
else ifeq($(plat), JLQ0310) CROSS = arm-none-linux-gnueabi-
endif
CC=$(CROSS)gcc2.多条件判断:
ifeq ($(findstring MAJRS,$(SupportDevices))$(findstring CUSTOM,$(Specialities)), MAJRSCUSTOM)xxxx
endif

代码分析:

ifeq和ifneq在逻辑上就是C语言的if语句,ifeq是后面的条件成立时执行,ifneq是条件不成立时执行,具体用哪一个根据需求。
常见用法:同一个打包环境打包出适应不同硬件平台的程序。运行在操作系统之上的程序是不考虑硬件平台的,写C、C++、Java的程序员是不用考虑自己写的代码将来在什么硬件平台运行,要考虑就没法写代码了。在嵌入式开发中,同一份代码要适应不同的硬件平台只需要用匹配的交叉工具编译链去编译程序即可。上面的代码就是在判断本次打包的程序将要在什么平台上运行,从而选择不同的交叉工具编译链去编译程序。
多条件判断:ifeq和ifneq在使用上没有C语言的if语句灵活,if语句有与(&&)、或(||)等逻辑操作,ifeq和ifneq是没有,但是可以通过拼接的方式来实现多条件判断。代码中的第二种用法就相当于C语言里的条件与。findstring是在字符串中查找特定的字符,具体用法在这里不做介绍,上面的判断条件就是SupportDevices里有MAJRS字符串,同时Specialities变量里有CUSTOM字符串,两者满足就执行语句,具体做法就是分别在两个变量里查找字符串然后再拼接成一个字符串进行判断。

ifdef和ifndef

参考博客:《条件编译在工作当中的应用》

Makefile中的条件编译:ifeq、ifneq、ifdef和ifndef相关推荐

  1. 【Scripts系列】之Makefile中条件分支ifeq/else/endif/else ifeq/ifneq/ifdef/ifndef用法详解

    DATE: 2019-2-22 前言       条件分支的用法在任何编程语言和脚本以及逻辑中都广泛使用.前文讲述过C语言中预处理的条件编译#ifdef/#if/#elif/#else/#endif用 ...

  2. ifeq makefile 或语句_makefile中的 ifeq ifneq ifdef ifndef条件判断

    feq ifneq ifdef ifndef 条件语句中使用到了三个关键字:"ifeq"."else"和"endif".其中: 1.     ...

  3. Makefile中条件判断ifeq、ifneq、ifdef、ifndef的含义

    一.ifeq 1.举例 根据 $(CC) 取值不同,执行不同的处理逻辑 libs_for_gcc = -lgnu normal_libs = foo: $(objects) ifeq ($(CC),g ...

  4. MakeFile中ifeq语法报错

    /bin/sh: -c: line 0: syntax error near unexpected token `64,' /bin/sh: -c: line 0: `ifeq (64, 64)' [ ...

  5. Makefile 中的 ifeq 的缩进导致的错误

    转自:http://stackoverflow.com/questions/4483313/make-error-for-ifeq-syntax-error-near-unexpected-token ...

  6. makefile中的patsubst、notdir、wildcard介绍以及用法

    1.1 patsubst:模式替换函数 格式:格式:$(patsubst pattern, replacement, text) 功能:查找text中的单词(单词以"空格".&qu ...

  7. ifeq makefile 或语句_makefile ifeq 语句

    Page 12 使用条件判断 ifeq,else,endif ifeq ($(CC),gcc) Ifeq表示条件语句的开始,并指定一个条件表达式,表达式包含两个参数, 以逗号分隔,表达式以圆括号括起. ...

  8. Makefile中的条件判断(ifeq、ifneq、ifdef、ifndef)

    以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除. 一.条件判断的关键字 日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况.比如在一个工程文件中可编译的源文件很多 ...

  9. ifeq makefile 或语句_Makefile ifeq、ifneq、ifdef和ifndef(条件判断)

    日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的.手动编译去操作文件显然是 ...

最新文章

  1. Github标星5.4k+:常见NLP模型的代码实现(基于TensorFlow和PyTorch)
  2. Sql Server中三种字符串合并方法的性能比较
  3. python中dataframe合并列名日期到季度_python – 如何在特定日期范围内的pandas列DataFrame中对某些值求和...
  4. 华为s8600手机驱动_只有手机才能快充?华为MateBook X的灵巧快充解放你的续航焦虑-华为 ——快科技(驱动之家旗下媒体)-...
  5. 重磅盘点!过去一年里最受欢迎的技术干货,全在这里了
  6. ABAP基础篇-语法-数据类型
  7. 禁止选择文字和文本超出显示省略号
  8. iostat命令简单使用
  9. ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
  10. Uboot详细解析1
  11. AlphaGo Zero:从头开始学习
  12. 路由分析软件——VisualRoute v14.0c
  13. 计算机操作员高级教学大纲,计算机操作员课程教学大纲.doc
  14. 生成缩略图 java_java实现生成缩略图
  15. PTA自测-1 打印沙漏 python实现
  16. 【Vue】“npm WARN ajv-keywords@3.2.0 requires a peer of ajv@^6.0.0 but none is installed.”
  17. 宝塔使用心得--快速部署javaweb应用
  18. c语言dfs算法初步讲解,[转载]算法初步
  19. jump Server开源堡垒机的部署以及资产管理
  20. python将图片分割成两部分

热门文章

  1. 日产将在上海车展展示多款概念车
  2. 分解因数 ,求美国节日,猴子分桃
  3. 关于python格式对齐的问题_python字符串format中英文空格对齐问题
  4. php原生:无限极分类
  5. 超45%增速、阿里腾讯押注,低/无代码迎来爆发
  6. 在ubuntu中下载迅雷链接(thunder://)
  7. codeforces739C - Skills 金中市队儿童节常数赛
  8. 离线数仓与实时数仓的比较
  9. IE浏览器中选择本地文件
  10. Speex之一-介紹Speex