patsubst
, patsubsti
fonctions NMAKE
Évalue une liste d’éléments avec chaque élément qui correspond à un modèle remplacé par une substitution, et les éléments qui ne correspondent pas conservés tel quel.
Syntaxe
$(patsubst pattern,replacement,input)
$(patsubsti pattern,replacement,input)
Paramètres
pattern
Modèle à rechercher.
replacement
Modèle à remplacer pattern
par. Si un caractère générique est présent replacement
, il est remplacé par le texte mis en pattern
correspondance par le caractère générique.
input
Liste des éléments à remplacer ou conserver.
Valeur retournée
Retourne input
, mais chaque élément qui correspond pattern
est remplacé par replacement
. Les éléments qui ne correspondent pattern
pas sont conservés comme c’est le cas.
Notes
patsubsti
est la version non sensible à la casse de patsubst
.
Cette fonction de macro est disponible à partir de Visual Studio 2022 version 17.1, dans NMAKE version 14.31 ou ultérieure.
Exemple
$(patsubst He%,_%_,Hello Hey Hi) # Evaluates to "_llo_ _y_ Hi"
# "He" matches "Hello" and "Hey", and so "llo" and "y" are matched by the wildcard
# and used to substitute the wildcard in the replacement. "Hi" is not matched and so is kept as-is
$(patsubst Hi,Bye,Hello Hey Hi) # Evaluates to "Hello Hey Bye" - No wildcard is required
$(patsubst %lo,Bye,Hello Hey Hi) # Evaluates to "Bye Hey Hi"
# A wildcard can be used in the pattern without a wildcard in the replacement
$(patsubst he%,_%_,Hello Hey Hi) # Evaluates to "Hello Hey Hi" - patsubst is case-sensitive, so no substitutions performed
$(patsubsti he%,_%_,Hello Hey Hi) # Evaluates to "_llo_ _y_ Hi" - patsubsti is case-insensitive
# patsubsti is commonly used to change the file extensions of a list of files
OBJ_FILES=$(patsubst %.c,%.obj,$(C_SOURCES)) $(patsubst %.cpp,%.obj,$(patsubst %.cxx,%.obj,$(CPP_SOURCES)))