我的makefile中的一个变量包含一长串文件,用空格分隔。我需要仔细查看此列表,但是由于文件名之间用空格隔开,因此操作起来并不容易。因此,我想打印出列表,但每个文件名用新行分隔。
这是我的尝试:
SOME_VARIABLE := I want this to be on separate lines
SOME_VARIABLE_SPLIT := $(subst ' ','\n',$(SOME_VARIABLE))
$(info $(SOME_VARIABLE_SPLIT))
输出:
我希望它在单独的行上
如何打印包含以空格分隔的文件名的变量,并且每个文件名都在单独的行上?
答案 0 :(得分:1)
您的问题出在subst
的工作方式上:您的引号和反斜杠实际上是用引号引起的。
一种解决方案是首先定义两个变量,这些变量包含空格和换行符:
# $(NULL) is empty string
NULL :=
# $(SPACE) is one space
SPACE := $(NULL) $(NULL)
# $(\n) is new line
define \n
endef
,然后在替换中使用它们:
SOME_VARIABLE := I want this to be on separate lines
SOME_VARIABLE_SPLIT := $(subst $(SPACE),$(\n),$(SOME_VARIABLE))
$(info $(SOME_VARIABLE_SPLIT))
注意:
NULL
变量来定义一个变量,该变量的值是一个空格,\n
;对于可读性而言,也许不是最好的事情(读者可能会感到困惑),但仍然足够有趣,无论如何都可以使用它,