带空格的Makefile字符串
这将返回带空格的Makefile字符串,makefile,gnu-make,Makefile,Gnu Make,这将返回3。 如何使其返回2?或者make没有按照我的想法工作???make肯定没有按照你的想法工作,如果你认为make对任何类型的引号都感兴趣:)。Make在几乎所有情况下都忽略单引号字符和双引号字符(即与任何其他字符一样视为普通字符),并且所有函数都使用简单的空格分隔符工作,而不考虑引号字符 一般来说,在目标名称中需要空格的系统中使用make是不实际的。它只是不起作用:make中有太多的内容是基于空格作为分隔符的,并且没有通用的、通用的方法来逃避在任何地方都有效的空格 在你非常特殊的情况下,
3
。
如何使其返回
2
?或者make没有按照我的想法工作???make肯定没有按照你的想法工作,如果你认为make对任何类型的引号都感兴趣:)。Make在几乎所有情况下都忽略单引号字符和双引号字符(即与任何其他字符一样视为普通字符),并且所有函数都使用简单的空格分隔符工作,而不考虑引号字符
一般来说,在目标名称中需要空格的系统中使用make是不实际的。它只是不起作用:make中有太多的内容是基于空格作为分隔符的,并且没有通用的、通用的方法来逃避在任何地方都有效的空格
在你非常特殊的情况下,你可以玩这样的把戏:
var := 'C:/some/path here' labas
all:
@echo $(words $(var))
基本上,这将创建一个包含空格的变量$S
,然后用其他非空格字符替换变量路径中的所有空格(这里我选择了^
,但您可以选择您喜欢的,只需注意它必须是一个保证不会出现在路径中的字符)
现在,此路径不包含空格,因此您可以将其与make函数一起使用
这有一个主要的缺点:不仅这里显示的复杂性,而且注意这些路径不能用在目标名称中,因为它们实际上不存在于磁盘上
通常,您不应该使用带有make的包含空格的路径。如果必须使用包含空格的路径,则make很可能不是您要使用的正确工具。如果您认为make对任何类型的引号感兴趣,make肯定不会按照您的想法工作:)。Make在几乎所有情况下都忽略单引号字符和双引号字符(即与任何其他字符一样视为普通字符),并且所有函数都使用简单的空格分隔符工作,而不考虑引号字符
一般来说,在目标名称中需要空格的系统中使用make是不实际的。它只是不起作用:make中有太多的内容是基于空格作为分隔符的,并且没有通用的、通用的方法来逃避在任何地方都有效的空格
在你非常特殊的情况下,你可以玩这样的把戏:
var := 'C:/some/path here' labas
all:
@echo $(words $(var))
基本上,这将创建一个包含空格的变量$S
,然后用其他非空格字符替换变量路径中的所有空格(这里我选择了^
,但您可以选择您喜欢的,只需注意它必须是一个保证不会出现在路径中的字符)
现在,此路径不包含空格,因此您可以将其与make函数一起使用
这有一个主要的缺点:不仅这里显示的复杂性,而且注意这些路径不能用在目标名称中,因为它们实际上不存在于磁盘上
通常,您不应该使用带有make的包含空格的路径。如果必须使用包含空格的路径,则make很可能不是您要使用的正确工具