NDS开发入门教程-MakeFile文件解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Makefile文件解析

在我写教程之前,我先感谢一下libnds的开发人员以及维护人员。他们给我们提供了十分方便的开发库libnds,让我们能够更加快捷简单的开发NDS程序。下面我们进入正题。

注:以下绿色为文件的原注释,紫色是我后来添加的注释方便大家理解。

#---------------------------------------------------------------------------------

.SUFFIXES:

#---------------------------------------------------------------------------------

ifeq ($(strip $(DEVKITARM)),)

$(error "Please set DEVKITARM in your environment. export DEVKITARM=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))

相关文档
最新文档