我正在尝试使用 Makefile 编译.cpp
位于 中的一堆文件,然后在中src/code/*.cpp
编译每个文件,最后生成带有这些文件的可执行文件。*.o
build/
build/
我已经阅读了一些我尝试使用的答案,但遇到了我不理解的问题。
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 $@
$(OBJECTS): $(BUILDDIR)/%.o : $(SOURCEDIR)/%.cpp
$(CC) $(FLAGS) $< -o $@
clean:
rm -f $(BUILDDIR)/*o $(BUILDDIR)/$(EXECUTABLE)
我确实收到以下错误,我不知道为什么:
Makefile:19: target `src/code/main.cpp' doesn't match the target pattern
我还看到,在尝试构建 EXECUTABLE 时,它没有使用 .o 文件,所以我的规则在这里似乎是错误的。