免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9379 | 回复: 7
打印 上一主题 下一主题

路经宝地,问个Makefile中未定义变量到底是否为空的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-14 00:11 |只看该作者 |倒序浏览
最近想认真研究一下Makefile,所以就遇到这样的问题:
原本以为一个未定义变量,判断其值应该为空吧!但是写了一个测试的Makefile,发现居然不是这样的:

  1. ifeq (GD, )
  2.         GD := add source file
  3. else
  4.         GD := source file has been added
  5. endif

  6. %:
  7.         @echo '$*=$($*)                $(origin $*)'
复制代码
复制代码
然后执行make GD结果如下:
localhost shell # make GD
GD=source file has been added                file
我反反复复确认好几遍,结果都是这样的。一个未定义变量,为啥通过ifeq来判断是不为空的呢?当然我知道还可以通过ifdef来判断,我就是想搞明白未定义变量通过ifeq判断是否为空,还望知道的兄弟,给一个解释啊!多些了!

论坛徽章:
0
2 [报告]
发表于 2012-01-19 16:40 |只看该作者
ifeq ($(GD),)

论坛徽章:
0
3 [报告]
发表于 2012-01-19 23:02 |只看该作者
本帖最后由 uusky_cu 于 2012-01-19 23:02 编辑

谢谢了!兄弟,看到这个答案都快哭了……没有想到啊,居然是多了一个空格。

论坛徽章:
0
4 [报告]
发表于 2013-06-03 21:48 |只看该作者
OS = $(shell uname -s)
ifeq "Linux" "$(OS)"

这样可以判断OS是否为Linux, 检查变量是否为空为啥不可以如下:

STR = $(shell uname -s)
ifeq "" "$(STR)"
   <STR_IS_EMPTY_PROC>

论坛徽章:
0
5 [报告]
发表于 2013-06-03 21:49 |只看该作者
prc 发表于 2012-01-19 16:40
ifeq ($(GD),)


我的makefile里这种判断也不成功。。。

论坛徽章:
0
6 [报告]
发表于 2013-06-04 17:37 |只看该作者
回复 5# Kallawa

if ($(strip $(GD)),)
...


多半GD在什么地方被加了空格


   

论坛徽章:
0
7 [报告]
发表于 2013-06-04 22:57 |只看该作者
prc 发表于 2013-06-04 17:37
回复 5# Kallawa

if ($(strip $(GD)),)


没有空格,这个还是确认过了

论坛徽章:
0
8 [报告]
发表于 2013-06-05 14:25 |只看该作者
回复 7# Kallawa


    那到底$(shell uname -s)的值是什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP