GNU make:在同一个字符串的两个地方替换文本?

GNU make: text replacement at two places in the same string?

在 GNU makefile 中,我需要重命名
/infiles/signal_*.wav

/outfiles/out_signal_*.wav

这个有效(使用 subst):

SIGNALIN += $(wildcard /infiles/signal_*.wav)

TEMP += $(subst infiles,outfiles, $(SIGNALIN) )
SIGNALOUT += $(subst signal,out_signal, $(TEMP) )

有没有更好的单行方式,不包括 TEMP 行?

您可以包装函数调用:

SIGNALOUT += $(subst signal,out_signal,$(subst infiles,outfiles,$(SIGNALIN)))

在您的情况下,实际上并没有 两个地方的替换。您想要的是将每个单词开头的 /infiles/ 替换为 /outfiles/out_。那是一个地方。尝试:

SIGNALOUT := $(patsubst /infiles/%,/outfiles/out_%,$(SIGNALIN))