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

问题描述 投票:0回答:2

背景

我希望能够使用函数指定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

我假设这是因为call函数将逗号视为标记第一个参数的结尾,因此返回值为"hi

(我正在使用Gnu Make 4.1)

有没有成功在字符串中使用逗号的方法?

我已经尝试了各种方法来逃避引号和逗号,但似乎没有什么能解决它。

makefile
2个回答
2
投票

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

C := ,

get_first_param = $(1)

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

0
投票

这样做有用:

get_first_param = $(1)
comma =,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.