博客
关于我
makefile工作笔记0003---Makefile的ifeq逻辑或,逻辑与的变通实现
阅读量:796 次
发布时间:2023-02-06

本文共 999 字,大约阅读时间需要 3 分钟。

在使用Makefile进行项目构建时,条件判断是非常常见的操作。Makefile提供了一种简单而强大的条件判断语法,其中ifeq(if equal)是最常用的条件判断指令。ifeq用于比较两个变量是否相等,或者一个变量与一个预期值是否相等。endif则是用来结束条件判断的语句。

1. ifeq 的基本用法

ifeq 的基本语法格式如下:

ifeq ($(变量名), 变量值 )

例如:

ifeq ($(DATABASE_HOST), localhost)

上述代码的意思是:如果DATABASE_HOST变量的值等于localhost,那么接下来的命令就会被执行。endif 用于结束条件判断的语句。

如果需要多个条件判断,可以使用 elif(else if)来链式判断:

ifeq ($(OS), linux)    ...elif eq ($(OS), macosx)    ...else    ...endif

2. 逻辑与的变通实现

在Makefile中,&&(逻辑与)和||(逻辑或)这样的符号并不存在。要实现类似的逻辑,可以通过以下方法来变通。

需要判断两个变量都存在的情况

比如,判断VALUE1VALUE2两个变量都存在时,可以使用ifneq(if not equal)来实现:

ifneq ($(VALUE1)$(VALUE2), )

$(VALUE1)$(VALUE2)会将两个变量的值连接起来。如果两个变量都存在且不为空,连接后的结果不会是空字符串,因此ifneq会进入后面的命令块。

需要判断VALUE1等于V1且VALUE2等于V2的情况

可以通过将两个变量的值连接起来,并与V1_V2进行比较:

ifeq ($(VALUE1)_$(VALUE2), V1_V2)

中间的下划线 _ 可以替换为其他合适的字符。

需要判断VALUE1等于V1或VALUE2等于V2的情况

这种情况可以通过findstring函数来实现。findstring用于查找字符串,如果找到指定的字符串则返回非空值,否则返回空值。可以将VALUE1VALUE2的值连接起来,然后查找V1V2

ifneq ($(findstring $(VALUE1)$(VALUE2), V1 V2), )

如果VALUE1VALUE2等于V1V2,则findstring不会返回空值,条件判断为真。

转载地址:http://jeufk.baihongyu.com/

你可能感兴趣的文章
miniUI mini-monthpicker ie8兼容性问题
查看>>
Mint-Ui 时间组件,比较时间
查看>>
Mint-UI中Invalid prop: type check failed for prop "value". Expected String, got Array.解决方案
查看>>
Min_25筛
查看>>
Mirantis OpenStack fuel 物理机部署
查看>>
Missing artifact com.sun:tools:jar:1.5.0解决的方法
查看>>
mit oracle v2.2,Oracle Exadata Database Machine X2-2 Hardware
查看>>
MIT-JOS系列6:用户环境(二)
查看>>
Mitel MiCollab 企业协作平台 任意文件读取漏洞复现(CVE-2024-41713)
查看>>
MIT研制出空陆自动切换型无人机技术,构想多年的“飞行车”或将实
查看>>
miui12怎么自定义开机动画_一篇文章看懂Redmi Note 7/7 Pro新增MIUI 12十大暖心功能...
查看>>
MixPHP_数据库操作基类
查看>>
myeclipse启动resin出错
查看>>
myeclipse删除项目后重新导入
查看>>
MyEclipse使用Ant打包项目
查看>>
MyEclipse中的SWT/Swing设计器(上)
查看>>
mybatis针对mysql自增主键怎样配置mapper
查看>>
Mybatis采坑记及源码分析
查看>>
mybatis配置模板详细分析(全)
查看>>
Mybatis配置useGeneratedKeys=“true“ keyProperty=“id“的作用
查看>>