无法使我的生成文件工作

cant make my makefile work

本文关键字:文件 工作 我的      更新时间:2023-10-16

项目的文件夹结构:

|--particle-system
|   |-- bin
|   |   |-- .o files
|   |-- docs
|   |   |-- design.md
|   |   `-- TO_DO
|   |-- Makefile
|   |-- src
|   |   |-- .cpp files + .h files
|   `-- test

我需要将所有生成的 .o 文件放入 bin 文件夹中。此外,清理应删除所有 .o 文件和/bin 文件夹。

我的制作文件:

# particle-system Makefile
EXE = particlesystem
OBJ_DIR = bin
CFLAGS = -g
CXXFLAGS = -Wall -Wextra -g -std=c++0x
LDFLAGS = -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lSDL2_gfx -lm

 # c++ source files of the project
CXXFILES = $(shell find src -maxdepth 1 -type f -name '*.cpp')
CXXOBJ = $(CXXFILES:.cpp=.o)
ifdef V
MUTE =
VTAG = -v
else
MUTE = @
endif
all: $(EXE)
    # build successful
$(EXE): $(CXXOBJ)
    $(MUTE)$(CXX) $(CXXOBJ) -o $(EXE) $(LDFLAGS)
$(OBJ_DIR)/%.o: src/%.cpp
    $(MUTE)$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@

$(OBJ_DIR)/%.o: src/%.c
    $(MUTE)$(CC) $(CFLAGS) $(INCLUDE) $< -c -o $@
run: all
    $(MUTE)./$(EXE)
clean:
    # Cleaning...
    -$(MUTE)rm -f $(EXE) $(OBJECTS)

我不知道为什么这个制作文件不起作用。请说出这里有什么问题。

此行将导致在与源文件相同的目录中创建.o文件:

CXXOBJ = $(CXXFILES:.cpp=.o)

因此,这些行不起作用,因为$(OBJ_DIR):中没有.o文件

$(OBJ_DIR)/%.o: src/%.cpp
    $(MUTE)$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
$(OBJ_DIR)/%.o: src/%.c
    $(MUTE)$(CC) $(CFLAGS) $(INCLUDE) $< -c -o $@

此外,未定义$(INCLUDE)

在此行中,未定义$(OBJECTS)

-$(MUTE)rm -f $(EXE) $(OBJECTS)