博客
关于我
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/

你可能感兴趣的文章
mac环境安装docker
查看>>
MAC生成公钥私钥、PKCS1 转 PKCS8
查看>>
Mac电脑怎么读写不了移动硬盘?解决苹果电脑不能读写移动硬盘问题
查看>>
Mac电脑生成git的公私钥(拉取代码更便捷)
查看>>
MAC解决端口号被占用
查看>>
mac配置自定义域名
查看>>
Magentic-One、AutoGen、LangGraph、CrewAI 或 OpenAI Swarm:哪种多 AI 代理框架最好?
查看>>
magento1给customer添加自定义属性
查看>>
Magic Leap是快出产品的节奏,已开放内容开发者注册通道
查看>>
MajorDoMo thumb.php 未授权RCE漏洞复现(CNVD-2024-02175)
查看>>
Majorization-Minimization (MM) 和 Successive Convex Approximation (SCA)
查看>>
makefile 打印
查看>>
makefile工作笔记0001---认识使用makefile
查看>>
Makefile遗漏分隔符错误解决
查看>>
malloc和定位new表达式
查看>>
Malor Mass(分子量)
查看>>
MAMP无法正常启动,错误提示The built-in Apache is active
查看>>
Managing CentOS/RHEL kernel modules.
查看>>
Mangoa-Auth/芒果自助多应用企业级授权系统拥有盗版入库、远程更新等功能
查看>>
MangoDB4.0版本的安装与配置
查看>>