我希望能够使用功能指定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)
是否可以成功在字符串中使用逗号?
我已经尝试了各种将引号和逗号转义的方法,但似乎没有任何解决方法。
答案 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")
但是我不知道这是否是最好的方法