首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能让我的作品

不能让我的作品
EN

Stack Overflow用户
提问于 2016-03-22 07:09:44
回答 1查看 105关注 0票数 0

项目文件夹结构:

代码语言:javascript
复制
|--particle-system
|   |-- bin
|   |   |-- .o files
|   |-- docs
|   |   |-- design.md
|   |   `-- TO_DO
|   |-- Makefile
|   |-- src
|   |   |-- .cpp files + .h files
|   `-- test

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

我的制作文件:

代码语言:javascript
复制
# 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不能工作。请告诉我这里出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 14:47:05

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

代码语言:javascript
复制
CXXOBJ = $(CXXFILES:.cpp=.o)

因此,这些行没有任何效果,因为在.o中没有$(OBJ_DIR):文件。

代码语言:javascript
复制
$(OBJ_DIR)/%.o: src/%.cpp
    $(MUTE)$(CXX) $(CXXFLAGS) $(INCLUDE) $< -c -o $@

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

另外,$(INCLUDE)也没有定义。

在这一行中,没有定义$(OBJECTS)

代码语言:javascript
复制
-$(MUTE)rm -f $(EXE) $(OBJECTS)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36148164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档