Tôi cố gắng để sử dụng Makefile để biên dịch một loạt các .cpp
file nằm trong src/code/*.cpp
, sau đó biên dịch mỗi *.o
trong build/
, và cuối cùng tạo ra thực thi với những người trong build/
là tốt.Makefile: Biên dịch từ thư mục khác thư mục
Tôi đã đọc một vài câu trả lời mà tôi đã cố gắng làm việc nhưng gặp phải các vấn đề mà tôi không hiểu.
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)
tôi làm nhận được lỗi sau đây, và tôi không chắc chắn lý do tại sao:
Makefile:19: target `src/code/main.cpp' doesn't match the target pattern
Tôi cũng thấy rằng khi cố gắng xây dựng thực thi, nó không được sử dụng các tập tin .o, vì vậy nó dường như quy tắc của tôi sai ở đây.
Chỉ cần cập nhật Makefile một chút. – user1777907