makefile中变量值后面的空格问题

本文详细记录了在Makefile中使用ifeq函数进行条件编译时遇到的问题。作者发现由于在赋值时末尾多了一个空格,导致条件判断始终不正确。经过修正后,问题得到解决。文章提醒在编写Makefile时要注意空格和Tab的使用,以避免类似错误。
摘要由CSDN通过智能技术生成

一、问题描述:
在makefile中想要借用ifeq()函数,来实现条件编译:即ifeq()函数判断不同场景,给源码传递不同的宏定义,从而控制编译不同的源码。
出错的makefile相应部分如下:

#编译版本(场景)选择
VERSION_CONTROL := 1  #1:场景1,2:场景2
ifeq (1, ${VERSION_CONTROL})   
CFLAGS += -DVERSION_ONE
else
CFLAGS += -DVERSION_TWO
endif

明明我上面设置的是场景1,想要添加的是宏定义-DVERSION_ONE,但是始终都是进入下面else的-DVERSION_TWO。
二、问题解决
反复尝试和测试,最后终于发现问题的点。
原来上述makefile脚本中,把配置项“VERSION_CONTROL:=1”后面的空格也当成了值的一部分。。。所以上述代码的该处配置项,值始终等于“1 ”加上个“空格”(虽然后来想了想,makefile的脚本语言,连个变量类型都没有,而我变量值确实是个1+空格,把空格当成个字符好像也不为过。。。但是这个错误依然让我很无语)

总结:把上述配置项“=1”后面的空格删除,问题解决。
为了避免上述问题,再写makefile时,还是把注释单独写一行吧。
改正后:

#编译版本(场景)选择,1:场景1,2:场景2
VERSION_CONTROL := 1 
ifeq (1, ${VERSION_CONTROL})   
CFLAGS += -DVERSION_ONE
else
CFLAGS += -DVERSION_TWO
endif

三、附赠makefile中关于tab、空格使用需要注意的地方:(tab对齐,不用或少用空格)在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值