patsubstpatsubsti NMAKE 函数

计算结果为项目列表,其中与模式匹配的每个项目被替换替换,不匹配的项目保持原样。

语法

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

参数

pattern
搜索的模式

replacement
替换 pattern模式。 如果 replacement 中存在通配符,则将被替换为 pattern 中的通配符匹配的文本。

input
要替换或保留的项目列表

返回值

返回 input,但匹配 pattern 的每个项目都替换为 replacement。 不匹配 pattern 的项目保持原样。

注解

patsubstipatsubst 的不区分大小写版本。

从 Visual Studio 2022 版本 17.1 开始,此宏函数在 NMAKE 版本 14.31 或更高版本中可用。

示例

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

另请参阅

宏和 NMAKE
按类别列出的 NMAKE 函数