patsubst、 patsubsti NMAKE 函式

評估為項目清單,其中每個專案都符合替代所取代的模式,以及不符合保留狀態的專案。

語法

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

參數

pattern
要 搜尋的模式 。

replacement
要取代pattern的模式。 如果中的通配符存在 replacement,則會將它取代為相符通配符的 pattern 文字。

input
要取代或保留的項目清單。

傳回值

傳 input回 ,但符合 pattern 的每個項目都會由 replacement取代。 不符合 pattern 的專案會依目前狀態保留。

備註

patsubsti 是不區分大小寫的版本 patsubst。

此巨集函式可從 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 函式