NDS开发入门教程-MakeFile文件解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Makefile文件解析
在我写教程之前,我先感谢一下libnds的开发人员以及维护人员。他们给我们提供了十分方便的开发库libnds,让我们能够更加快捷简单的开发NDS程序。下面我们进入正题。
注:以下绿色为文件的原注释,紫色是我后来添加的注释方便大家理解。
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=
endif
include $(DEVKITARM)/ds_rules
#---------------------------------------------------------------------------------
# TARGET 输出名称
# BUILD 生成文件夹名称,对象文件以及中间文件将会被放在这个文件夹中。
# SOURCES 包含源文件的目录列表
# INCLUDES 包含外部头文件的目录列表
# DATA 包含二进制数据的目录列表
# GRAPHICS 用grit处理文件的目录列表
# AUDIO 包含用mmutil来处理的文件的文件目录
# SOUNDBANK_NAME maxmod生成的soundbank的名称
#MUSIC 外部音频文件目录
#
# 所有的文件必须在与项目相关的能够找到makefile文件的文件目录下。
#---------------------------------------------------------------------------------
TARGET := $(notdir $(CURDIR))
BUILD := build
SOURCES := source
INCLUDES := include
MUSIC := maxmod_data
#---------------------------------------------------------------------------------
# 以上部分相当于编程语言中的宏定义部分,通过:=给宏定义的变量名成进行赋值
# 在以下的代码中有使用到这些宏定义。
# 但是这些宏定义的名称以及赋值都是固定的,如果随意设置编译将不会成功。
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#对于以上的目录相关,如果不适用则不再其中添加。
#例如本例中未使用DATA则不添加DATA相关项在其中。
#以上代码都可以手动修改单一定要符合以上原则
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
#以下是代码生成选项
#---------------------------------------------------------------------------------
ARCH := -mthumb -mthumb-interwork
CFLAGS := -g -Wall -O2\
-march=armv5te -mtune=arm946e-s -fomit-frame-pointer\
-ffast-math \
$(ARCH)
CFLAGS += $(INCLUDE) -DARM9
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
#---------------------------------------------------------------------------------
#通常不做修改
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
# 这里添加我们希望连接到工程的外部库。当我们需要使用外部库的时候,
# 我们需要在这里添加外部库的名称。
#---------------------------------------------------------------------------------
LIBS := -lmm9 -lnds9
#---------------------------------------------------------------------------------
# 包含库文件的目录列表, 这个必须是库的顶级文件夹名称
#---------------------------------------------------------------------------------
LIBDIRS := $(LIBNDS)
#---------------------------------------------------------------------------------
# 从这个点往后没有你真正需要修改的,除非你需要为不同文件拓展名的文件添加规则
#---------------------------------------------------------------------------------
ifneq ($(BUILDDIR), $(CURDIR))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) soundbank.bin
export AUDIOFILES := $(foreach dir,$(notdir $(wildcard $(MUSIC)/*.*)),$(CURDIR)/$(MUSIC)/$(dir))