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

时间:2011-04-15 21:20:30

标签: 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)

当我make all时,只有第二个@echo输出内容:

$ make all 

obj/sample1.d obj/sample1_U.d 

(gnu make)manual陈述:

  

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

从这个解释中,我希望两个@echo语句产生相同的输出,但它们显然不会。使用显式pathsubst的第一个表单有什么问题?

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

1 个答案:

答案 0 :(得分:5)

大概你想要patsubst,而不是pathsubst