在以下示例中生成文件:生成文件:計算變量名
EXTENS := .c .C .cc .c++ .cpp .cxx
SOURCES := 1.c 2.C 3.cc 4.c++ 5.cpp 6.cxx
OBJECTS := $(SOURCES)
REPLACE_EXTENS = $(foreach f,$(EXTENS),$(eval $(1) := $(patsubst %$(f),%.o,$($(1)))))
$(call REPLACE_EXTENS, OBJECTS)
all:
@echo $(SOURCES)
@echo $(OBJECTS)
我期望線@echo $(OBJECTS)
到輸出:
1.o 2.o 3.o 4.o 5.o 6.o
然而它輸出什麼。我做錯了什麼,做什麼是正確的方法?
'$(EVAL ...)'沒有意義在這裏。 – reinierpost
'做什麼纔是正確的方法'你應該詳細說明你正在試圖解決什麼問題。 – user657267
@ user657267,我認爲這很明顯 - 從源文件列表創建目標文件列表 –