La fonction “patsubst” dans le Makefile

De la docs:

$(patsubst PATTERN,REPLACEMENT,TEXT)

Trouve des espaces séparés mots dans le TEXTE qui correspond au MOTIF et
les remplace par de REMPLACEMENT. Ici MODÈLE peut contenir un %
qui agit comme un caractère générique, correspondant à n'importe quel nombre de caractères
l'intérieur d'un mot.

...

Les espaces entre les mots est plié en un seul espace caractères;
attaque et de fuite les espaces sont ignorés.

Maintenant, étant donné un makefile, est:

# The pattern for patsubst, does NOT contain '%'
foo := $(patsubst  x,y,x    x    x)
# The pattern for patsubst, does contain '%'
bar := $(patsubst x%,y,x    x    x)


# The variable 'foo', is a result from a patsubst-pattern, that did NOT contain a '%'
# The variable 'bar', is a result from a patsubst-pattern, that did contain a '%'
all ::
    @echo 'foo is: "$(foo)"'
    @echo 'bar is: "$(bar)"'

En cours d'exécution, nous obtenons:

foo is: "y    y    y"
bar is: "y y y"

Donc, il est évident, que Faire, peut-être ou peut pas "pli" tous les espaces en un seul et unique espace.

Ou, ai-je fait quelque chose de mal.

OriginalL'auteur Ji Cha | 2015-08-24