patsubst
, patsubsti
funciones de NMAKE
Se evalúa como una lista de elementos con cada elemento que coincide con un patrón reemplazado por una sustitución y los elementos que no coinciden tal como están.
Sintaxis
$(patsubst pattern,replacement,input)
$(patsubsti pattern,replacement,input)
Parámetros
pattern
Patrón que se va a buscar.
replacement
Patrón por el que se va a reemplazar pattern
. Si un carácter comodín está presente en replacement
, se reemplazará por el texto que coincide con el carácter comodín pattern
.
input
Lista de elementos que se van a reemplazar o conservar.
Valor devuelto
Devuelve input
, pero cada elemento que coincide pattern
se reemplaza por replacement
. Los elementos que no coinciden pattern
se mantienen tal como están.
Comentarios
patsubsti
es una versión sin distinción entre mayúsculas y minúsculas de patsubst
.
Esta función de macro está disponible a partir de la versión 17.1 de Visual Studio 2022, en la versión 14.31 o posterior de NMAKE.
Ejemplo
$(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)))