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))
在 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))