C++ 我的makefile无法工作
项目的文件夹结构:C++ 我的makefile无法工作,c++,makefile,C++,Makefile,项目的文件夹结构: |--particle-system | |-- bin | | |-- .o files | |-- docs | | |-- design.md | | `-- TO_DO | |-- Makefile | |-- src | | |-- .cpp files + .h files | `-- test 我需要将生成的所有.o文件放入bin文件夹。此外,清理还应删除所有.o文件和/bin文件夹 我的生成文件: # pa
|--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)
#粒子系统生成文件
EXE=粒子系统
OBJ_DIR=bin
CFLAGS=-g
CXXFLAGS=-Wall-Wextra-g-std=c++0x
LDFLAGS=-lSDL2-lSDL2_映像-lSDL2_ttf-lSDL2_混频器-lSDL2_gfx-lm
项目的C++源文件
CXXFILES=$(shell find src-maxdepth 1-type f-name'*.cpp')
CXXOBJ=$(CXX文件:.cpp=.o)
ifdef V
哑巴=
VTAG=-v
其他的
静音=@
恩迪夫
全部:$(EXE)
#建设成功
$(EXE):$(CXXOBJ)
$(静音)$(CXX)$(CXXOBJ)-o$(EXE)$(LDFLAGS)
$(OBJ_DIR)/%.o:src/%.cpp
$(静音)$(CXX)$(CXXFLAGS)$(包括)$<-c-o$@
$(OBJ_DIR)/%.o:src/%.c
$(静音)$(CC)$(CFLAGS)$(包括)$<-c-o$@
跑步:全部
$(静音)。/$(EXE)
清洁:
#清洁。。。
-$(静音)rm-f$(EXE)$(对象)
我不知道为什么这个makefile不工作。请说明此处的错误。此行将导致在与源文件相同的目录中创建
.o
文件:
CXXOBJ = $(CXXFILES:.cpp=.o)
因此,这些行没有效果,因为$(OBJ_DIR):
clean
没有删除对象文件的原因是它们被称为$(cxobj)
,而不是$(对象)
。此外,您还没有在任何地方定义构建
。生成文件没有构建任何内容。当我输入make时,它只显示“#build successful”并停止。我甚至不明白为什么它会显示一条评论。是的,构建只是上一次更改的遗留部分。我的坏消息,删除了它。它不起作用并打印评论的唯一原因是,如果您已经有一个名为particlesystem
的文件。非常感谢您指出这一切。删除这些错误有助于我运行makefile。
$(OBJ_DIR)/%.o: src/%.cpp
$(MUTE)$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@
$(OBJ_DIR)/%.o: src/%.c
$(MUTE)$(CC) $(CFLAGS) $(INCLUDE) $< -c -o $@
-$(MUTE)rm -f $(EXE) $(OBJECTS)