学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现
2016-09-07 15:33
267 查看
(1)ifeq的用法
ifeq ($(变量名), 变量值 )
........
else ifeq ($(..), ..)
.........
else
.........
endif
(2)最近在学习makefile的过程中遇到需要用ifeq进行逻辑与判断,但是ifeq并没有像其他编程语言那样有 逻辑或(||) 逻辑与(&&) 的符号可用。这时候需要变通一下。
1)逻辑与变通实现:
举例说明:比如需要判断两个变量 VALUE1 和 VALUE2 的值都存在才执行某个动作,这需要逻辑与的判断
C语言的逻辑: if ( VALUE1 && VALUE2){
do something....
}
没有&&符号,我们可以这样变通:将两个变量链接起来再判断
ifneq ($(VALUE1)$(VALUE2),)
do something....
endif
如果变量 VALUE1 和 VALUE2 都有具体的值,比如需要进行这样的判断: VALUE1 == V1 && VALUE2 == V2, 可以按如下的写法;
ifeq ($(VALUE1)_$(VALUE2), V1_V2) ### 当然中间的下划线 "_" 可以用其他字符代替
do something....
endif
2) 逻辑或变通实现,同样是上面的两个变量
if( VALUE1 == V1 || VALUE2 == V2 ) {...} 可以用findstring函数做如下变通实现:
#如果VALUE1或者VALUE2为V1或V2,则findstring 不会返回空。
ifneq ($(findstring $(VALUE1)$(VALUE2), V1 V2),)
do something...
endif
ifeq ($(变量名), 变量值 )
........
else ifeq ($(..), ..)
.........
else
.........
endif
(2)最近在学习makefile的过程中遇到需要用ifeq进行逻辑与判断,但是ifeq并没有像其他编程语言那样有 逻辑或(||) 逻辑与(&&) 的符号可用。这时候需要变通一下。
1)逻辑与变通实现:
举例说明:比如需要判断两个变量 VALUE1 和 VALUE2 的值都存在才执行某个动作,这需要逻辑与的判断
C语言的逻辑: if ( VALUE1 && VALUE2){
do something....
}
没有&&符号,我们可以这样变通:将两个变量链接起来再判断
ifneq ($(VALUE1)$(VALUE2),)
do something....
endif
如果变量 VALUE1 和 VALUE2 都有具体的值,比如需要进行这样的判断: VALUE1 == V1 && VALUE2 == V2, 可以按如下的写法;
ifeq ($(VALUE1)_$(VALUE2), V1_V2) ### 当然中间的下划线 "_" 可以用其他字符代替
do something....
endif
2) 逻辑或变通实现,同样是上面的两个变量
if( VALUE1 == V1 || VALUE2 == V2 ) {...} 可以用findstring函数做如下变通实现:
#如果VALUE1或者VALUE2为V1或V2,则findstring 不会返回空。
ifneq ($(findstring $(VALUE1)$(VALUE2), V1 V2),)
do something...
endif
相关文章推荐
- Coursera deeplearning.ai 深度学习笔记1-2-Neural Network Basics-逻辑回归原理推导与代码实现
- yii 学习笔记十三、商品添加,逻辑部分实现
- 吴恩达老师深度学习视频课笔记:逻辑回归公式推导及C++实现
- 孙鑫VC学习笔记:第十七讲 用命名管道实现进程间的通信
- 《面向对象基础:C++实现》学习笔记之五
- PetShop3.x学习笔记5-我读cocoboy79《MS PetShop 3.x 设计与实现——数据访问层》
- C#中实现事件的学习笔记
- 新一代Web Service 实现包 -- AXIS2 学习笔记 (一)
- 孙鑫VC学习笔记:第十七讲 用剪贴板实现进程间的通信
- 《面向对象基础:C++实现》学习笔记之四
- PetShop3.x学习笔记5-我读cocoboy79《MS PetShop 3.x 设计与实现——数据访问层》
- [ASP.NET学习笔记之十]ASP.NET实现在服务器端控制网页
- J2ME学习笔记--实现手机屏幕的切换
- 孙鑫VC学习笔记:第十五讲 增加互斥条件实现线程同步
- 孙鑫VC学习笔记:第十六讲 利用事件对象实现线程间的同步
- Community Server 2.0 学习笔记:如何实现在线人数?
- J2ME 3D学习笔记——实现简单的界面(附代码)
- JDO学习笔记之Sun JDO参考实现篇
- PetShop3.x学习笔记10-购物车参考资料2-PetShop购物车实现
- 《面向对象基础:C++实现》学习笔记之六