项目文件夹结构:
|--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)我不知道为什么这个makefile不能工作。请告诉我这里出了什么问题。
发布于 2016-03-22 14:47:05
这一行将导致在与源文件相同的目录中创建.o文件:
CXXOBJ = $(CXXFILES:.cpp=.o)因此,这些行没有任何效果,因为在.o中没有$(OBJ_DIR):文件。
$(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)https://stackoverflow.com/questions/36148164
复制相似问题