免费注册 查看新帖 |

Chinaunix

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

请教:GNU Makefile的foreach函数能否处理带空格的变量 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-18 21:59 |只看该作者 |倒序浏览
想要实现的目标:

  1. --arg='{"aa", "AA"}' --arg='{"bb", "BB"}' --arg='{"cc", "CC"}'
复制代码


Makefile:

  1. ARGS += '{"aa", "AA"}'
  2. ARGS += '{"bb", "BB"}'
  3. ARGS += '{"cc", "CC"}'
  4. ARGSTR = $(foreach arg,$(ARGS),--arg=$(arg))
复制代码


结果事与愿违:

  1. --arg='{"aa", --arg="AA"}' --arg='{"bb", --arg="BB"}' --arg='{"cc", --arg="CC"}'
复制代码

空格被当成分隔符了。

有什么好办法么?:wink:

[ 本帖最后由 skywjf 于 2009-9-18 22:05 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-09-19 14:23 |只看该作者
nullstring :=
space := $(nullstring) # end of the line


ARGS += '{"aa",$(space)"AA"}'
ARGS += '{"bb",$(space)"BB"}'
ARGS += '{"cc",$(space)"CC"}'

[ 本帖最后由 yy_galois 于 2009-9-19 14:34 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-09-19 15:21 |只看该作者
上面空格的用法是正确的。

但是仍然没有成功。
在变量展开的时候,无论是立即展开还是递归展开,在foreach之前,$(space)都已经替换成了空格。
所以,都被分开了。

实际上,
只有
ARGS += aa,AA
ARGS += bb,BB
ARGS += cc,CC
这种方式不会被拆开,双引号"也被当成了分割符。

论坛徽章:
0
4 [报告]
发表于 2009-09-19 15:51 |只看该作者
谢谢,看来只能放弃foreach了,写个脚本来代替
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP