如何在传递给调用函数的字符串中使用逗号

时间:2019-03-11 15:18:43

标签: makefile

背景

我希望能够使用功能指定Makefile选项,以便我的帮助目标可以自动列出所有已定义的选项。

我尝试过的

编写一个将帮助文本存储在变量中(并跟踪此类变量列表)的函数,以备后用。

这很好用,除非我在帮助字符串中使用逗号!

我已经尝试调试故障,并将其简化为以下我认为是根本原因的示例:

我有以下makefile:

get_first_param = $(1)

.PHONY: help
help:
    @echo $(call get_first_param, "Hi; my name is Peter")

如果我运行make help,则可以正常工作并打印消息。

但是,如果我将;更改为,,则会收到错误消息:

/bin/sh: 1: Syntax error: Unterminated quoted string
Makefile:5: recipe for target 'help' failed
make: *** [help] Error 2

我认为这是因为调用函数将逗号视为第一个参数的结尾,因此返回值为"hi

(我正在使用Gnu Make 4.1)

问题

是否可以成功在字符串中使用逗号?

我已经尝试了各种将引号和逗号转义的方法,但似乎没有任何解决方法。

2 个答案:

答案 0 :(得分:2)

唯一的方法是将其隐藏在变量后面,如下所示:

C := ,

get_first_param = $(1)

.PHONY: help
help:
        @echo $(call get_first_param, "Hi$C my name is Peter")

答案 1 :(得分:0)

如果您这样做,它将起作用:

get_first_param = $(1)
comma =,

.PHONY: help
help:
    @echo $(call get_first_param, "Hi$(comma) my name is Peter")

但是我不知道这是否是最好的方法