2012-09-15 43 views
0

鑑於以下GNU Makefile代碼。使用變量替換的GNU Makefile中的patsubst

ENDING = '\.cpp' 
OBJ = $(SOURCES:$(ENDING)=.o) # (does not work) 

這確實取代了什麼,但是,

OBJ = $(SOURCES:.cpp=.o) 

不同(cpp文件)。有沒有辦法告訴patsubst 特定的結局?或者至少要替換所有類型的結局,如下圖所示?

OBJ = $(SOURCES:.*=.o) # (does not work) 

回答

4

這工作:

ENDING = .cpp 
OBJ = $(SOURCES:$(ENDING)=.o) 

,這將取代所有的結局:

OBJ = $(addsuffix .o,$(basename $(SOURCES))) 
+0

我太專注於我並沒有意識到,\可能導致的問題正則表達式:)謝謝很多! – Johannes