由于条件指令ifeq经常用于比较从变量(通常包含空格)扩展的单词,我们可能希望并且实际上需要Make来去除任何前导或尾随空格.

事实上,你可能有一个相反的观点,即Make应该逐字记录ifeq条件的所有参数,因为用户可能已经将这些空格作为“测试”的一部分,并打算让这些空白进行决策在评估此ifeq指令时,factor为true或false.

我无法决定,哪一个更正确.

事实上,我并不孤单!

让自己无法决定,哪一个是正确的.因此,它可能会也可能不会剥离前导或尾随空格.

实际上,有时它只会剥离前导空格.

不令人失望,Make有时会剥离尾随空格.

当然,要检查的案例太多,所以我只会“做”其中的一些案例.

makefile(VERSION 1)是:

ifeq ( a, a)

all::

echo 'true'

else

all::

echo 'false'

endif

执行,我得到:

$make -r

echo 'false'

false

makefile(VERSION 2)是:

ifeq (a ,a )

all::

echo 'true'

else

all::

echo 'false'

endif

执行,我得到:

$make -r

echo 'false'

false

makefile(VERSION 3)是:

ifeq ( a , a )

all::

echo 'true'

else

all::

echo 'false'

endif

执行,我得到:

$make -r

echo 'false'

false

makefile(VERSION 4)是:

ifeq (a , a)

all::

echo 'true'

else

all::

echo 'false'

endif

执行,我得到:

$make -r

echo 'true'

true

makefile(VERSION 5)是:

ifeq (a, a)

all::

echo 'true'

else

all::

echo 'false'

endif

执行,我得到:

$make -r

echo 'true'

true

总结一下,只有少数情况,我们有:

# Both, have only leading whitespace.

ifeq( a, a) as: false.

# Both, have only trailing whitespace.

ifeq(a ,a ) as: false.

# Both, have trailing AND trailing whitespace.

ifeq( a , a ) as: false.

# Left-hand-size has only trailing, and right-hand-size has only leading whitepsace.

ifeq(a , a) as: true.

# Left-hand-size has NO whitespace at-all, and right-hand-size has only leading whitepsace.

ifeq(a, a) as: true.

因此,Make用于评估ifeq条件指令的真实性的这种方法肯定会变成:

>不太一致.

>维护不力.

>更难调试.

>容易出错.

>最后,很多“好玩”!

我们同意吗?

ifeq makefile 或语句_makefile中的“ifeq”条件语法相关推荐

  1. ifeq makefile 或语句_makefile中的ifeq、ifdef、ifneq的区别

    判断语句 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支.条件表达式可以是比较变量的值,或是比较变量和常量的值. 一.示例 下面的例子,判断$(CC)变量是否"gcc&q ...

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

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

  3. ifeq makefile 或语句_makefile ifeq 语句

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

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

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

  5. ifeq makefile 或语句_学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现

    (1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2)最近在学 ...

  6. python中多条件语句_Python中的带条件语句

    所以我编写了这段代码:它的调用方式如下: with c_with(needs_with(), lambda: get_stuff()) as gs: ##DOESN't call get_stuff( ...

  7. linux shell ifeq,Makefile中的ifeq 多条件使用

    Makefile中的ifeq 多条件使用 网上关于makefile中ifeq的介绍已经很多了,为什么我还要在写这篇文章,因为他们只说了if else两种条件的情况,并没有讲多于两种条件情况的使用. 多 ...

  8. Makefile中的ifeq 多条件使用

    Makefile中的ifeq 多条件使用 网上关于makefile中ifeq的介绍已经很多了,为什么我还要在写这篇文章,因为他们只说了if else两种条件的情况,并没有讲多于两种条件情况的使用. 多 ...

  9. linux shell ifeq,Makefile 中 ifeq ifneq 等用法

    (1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2)最近在学 ...

最新文章

  1. 关于位姿变换的一点体会
  2. dac生成信号频率取决于_DAC和AOC,谁将是数据通信领域最终赢家?
  3. xcode 中的iOS模拟器,home键快捷键
  4. Java中的字符串驻留
  5. python struct模块_python struct 模块
  6. javascript的性能优化tips
  7. c语言math函数 sgn,常用矩阵计算C语言代码
  8. matlab二维谐振子,基于有限差分法求解的二维谐振子的MATLAB程序如下。哪位大神能帮我做个注明啊,完全看不懂啊,,急...
  9. html页面锁屏,JavaScript网页锁屏效果源码实例
  10. android 常用代码
  11. JS获取DropDownList的value值与text值
  12. c 按输入的字母来输出对应效果
  13. 电脑共享打印机拒绝访问要怎么办
  14. 周期信号的傅里叶级数
  15. 解锁!95%的Android程序员做性能优化时,存在的五大误区和两大疑点!
  16. php获取七牛上传token失效,上传文件到七牛时,bad token了怎么处理?
  17. 安装完Tensorflow却找不到指定模块
  18. 我的第一篇论文诞生的故事
  19. 谈商业软件的发展趋势
  20. 用C语言实现简单的神经元

热门文章

  1. ScratchDet:随机初始化训练SSD目标检测器(论文笔记)
  2. 配置交换机的端口隔离功能
  3. TinyML:使用 ChatGPT 和合成数据进行婴儿哭声检测
  4. Python实现PSO粒子群优化支持向量机回归模型(svr算法)项目实战
  5. 使用networkx绘制社交网络图
  6. 字符串格式化不整齐 与 chr(12288)
  7. 麒麟系统鼠标滚轮不能实现页面滚动
  8. SSL协议之握手协议
  9. [恒泰医软] windows gettext.py raise ValueError('invalid token in plural form:%s' % value)
  10. 随机梯度下降算法原理