我希望能够使用函数指定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)
有没有成功在字符串中使用逗号的方法?
我已经尝试了各种方法来逃避引号和逗号,但似乎没有什么能解决它。
唯一的方法是将它隐藏在变量后面,如下所示:
C := ,
get_first_param = $(1)
.PHONY: help
help:
@echo $(call get_first_param, "Hi$C my name is Peter")
这样做有用:
get_first_param = $(1)
comma =,
.PHONY: help
help:
@echo $(call get_first_param, "Hi$(comma) my name is Peter")
但我不知道这是不是最好的方法