Partilhar via


patsubst, patsubsti Funções NMAKE

É avaliada como uma lista de itens, sendo que cada item que corresponda a um padrão é substituído e os itens que não correspondem ao padrão, são mantidos como estão.

Sintaxe

$(patsubst pattern,replacement,input)
$(patsubsti pattern,replacement,input)

Parâmetros

pattern
O padrão a ser pesquisado.

replacement
O padrão a ser substituído por pattern. Se um curinga estiver presente no replacement, ele será substituído pelo texto que o curinga em pattern correspondeu.

input
A lista de itens a serem substituídos ou mantidos.

Valor retornado

Retorna input, mas cada item que corresponde a pattern é substituído por replacement. Os itens que não correspondem a pattern são mantidos como estão.

Comentários

patsubsti é uma versão que não diferencia maiúsculas e minúsculas de patsubst.

Essa função de macro está disponível a partir do Visual Studio 2022 versão 17.1, no NMAKE versão 14.31 ou posterior.

Exemplo

$(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)))

Confira também

Macros e NMAKE
Funções NMAKE por categoria