Makefile之谜:这个特殊用途的途径有什么问题?

Tob*_*ias 2 makefile

我的makefile包含这些片段(以及其他):

SRC = src
OBJ = obj

DEPS = $(wildcard $(SRC)/*.cpp)

# ...

all : $(BINARIES)
    @echo $(pathsubst $(SRC)/%.cpp,$(OBJ)/%.d,$(DEPS))
    @echo $(DEPS:$(SRC)/%.cpp=$(OBJ)/%.d)
Run Code Online (Sandbox Code Playgroud)

当我make all,只有第二个@echo输出的东西:

$ make all 

obj/sample1.d obj/sample1_U.d 
Run Code Online (Sandbox Code Playgroud)

(gnu make)手册说明:

另一种类型的替换参考允许您使用patsubst函数的全部功能.它具有与上述'$(var:a = b)'相同的形式,但现在必须包含单个'%'字符.这种情况相当于'$(patsubst a,b,$(var))'

根据这个解释,我希望这两个@echo语句产生相同的输出,但他们显然没有.使用显式的第一个表单有什么问题pathsubst

(我gnu make 3.81在OS X上使用.)

Oli*_*rth 5

大概是你想要的patsubst,不是pathsubst.