如何替换Makefile中单词列表中出现的所有模式



Makefile的$(patsubst pattern, replacement, text)语句中,它在text的空白分隔单词列表中搜索任何pattern,并用替换替换它们。但手册上写着

Only the first ‘%’ in the pattern and replacement is treated this way; any subsequent ‘%’ is unchanged.

假设我有test_list := test1 test2我想从中列出build/test1/test1 build/test2/test2。因为patsubst只替换第一次出现的内容,所以如果我做$(patsubst %, build/%/%, $(test_list)),它会给我build/test1/% build/test2/%。如何制作build/test1/test1 build/test2/test2?有没有转换所有出现的patsubst的变体?

在这个相当简单的例子中,foreach应该做你想做的事情:

$(foreach t,$(test_list),build/$(t)/$(t))

最新更新