我想使用的Makefile編譯一堆位於src/code/*.cpp
.cpp
文件,然後編譯每個*.o
在build/
,最後生成可執行文件與那些在build/
爲好。的Makefile:從目錄編譯到另一個目錄
我已經閱讀了一些我嘗試使用的答案,但遇到了我不明白的問題。
CC = g++
FLAGS = -g -c
SOURCEDIR = /src/code
BUILDDIR = build
EXECUTABLE = DesktopSpecificController
SOURCES = $(wildcard src/code/*.cpp)
OBJECTS = $(patsubst src/code/*.cpp,build/%.o,$(SOURCES))
all: dir $(BUILDDIR)/$(EXECUTABLE)
dir:
mkdir -p $(BUILDDIR)
$(BUILDDIR)/$(EXECUTABLE): $(OBJECTS)
$(CC) $^ -o [email protected]
$(OBJECTS): $(BUILDDIR)/%.o : $(SOURCEDIR)/%.cpp
$(CC) $(FLAGS) $< -o [email protected]
clean:
rm -f $(BUILDDIR)/*o $(BUILDDIR)/$(EXECUTABLE)
我得到了下面的錯誤,我不知道爲什麼:
Makefile:19: target `src/code/main.cpp' doesn't match the target pattern
我也看到,試圖建立可執行文件時,它不使用.o文件,所以它似乎我的規則在這裏是錯誤的。
剛剛更新我的Makefile咯。 – user1777907