我無法正確使用路徑替換。我有一大堆的源文件中SOURCES
:替換問題
@echo $(SOURCES)
foo.c bar.cpp bah.cxx
而且我想目標文件的列表:
# Imaginary only because nothing works
@echo $(OBJECTS)
foo.o bar.o bah.o
我試圖用patsubst
打造OBJECTS
列表。首先,這會產生一個源文件和目標文件的列表。除了錯誤,它會導致鏈接失敗的_main
的重複。
OBJECTS = $(patsubst %.c, %.o, ${SOURCES}) $(patsubst %.cc, %.o, ${SOURCES}) \
$(patsubst %.cpp, %.o, ${SOURCES}) $(patsubst %.cxx, %.o, ${SOURCES})
其次,這不執行替換。不僅是錯誤的,我找回原來的列表SOURCES
。
OBJECTS = $(patsubst %.c %.cc %.cpp %.cxx, %.o, ${SOURCES})
第三,這將產生源文件的原始名單:
OBJECTS = $(patsubst %.*, %.o, ${SOURCES})
我使用以下,這似乎乘以文件,就像兔子也嘗試:
OBJECTS = $(SOURCES:.c=.o) $(SOURCES:.cc=.o) \
$(SOURCES:.cpp=.o) $(SOURCES:.cxx=.o)
如何一個人在使用便攜式產品時執行擴展的簡單替換?
完美,謝謝。這正是我所期待的。 – jww
比我的解決方案好得多。雖然我可能會用foreach,如果我真的寫我的用來縮短它一點。 –