带空格的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很可能不是您要使用的正确工具