|
发表于 2006-4-7 12:08:00
|
显示全部楼层
<P> 由于楼主提供的材料并不是很详细,有一些定义没有被调用到,有一些定义没有写出来,</P><P>makefile的主要作用在于.建立依赖关系,即已经编译过的文件不会被重新编译,只编译新修改过的文件.</P><P>大多数的IDE的底层也是用了makefile.不用用户并没有感觉到而已.</P><P>makefile 主要由定义, 目标,动作组成. 定义就跟宏是一样的.目标是这次makefile要做的动作,即要输出</P><P>什么样的文件.当然一个文件可以有多个目标.目标还可以再细分,相互之间可以有依赖关系. 动作是以tap</P><P>为开头的一系列命令.由于论坛上可能由于一些原因,楼主的tap没有显示出来. makefile将根据首目标(本文中</P><P>有两个目标 normal 及clean),一级级查找.首先生成首目标的必要文件存不存在, 如果不存在如何查找,如何生成等等</P><P>nclude $(IADK)/common_defs.mk #包含常用定义的mk文件</P><P>SYSTEM_COMPONENTS = $(TCPIP_MOD) $(PLATFORM_LIBS) $(OS_LIBS) #定义系统要依靠的文件
OPTS_COMMON = $(LDFLAGS_FFS) { $(SYSTEM_COMPONENTS) } -lC++ #定义编译属性
BINDIR = $(OUTPUT_DIR) #定义输出二进制文件路径
OBJDIR = $(OBJECT_DIR) #定义obj路径
LIB_OUT_DIR = ../lib #定义lib路径
OPTS_LINK = $(LDFLAGS_MI) #定义链接属性
OUT_SUFIX=MI #输出二进制文件扩展名</P><P>OBJ_SUFIX=o #输出obj文件扩展名</P><P>ifeq ($(_TM_DEBUG),-g) #条件判断
OPTS_LINK = $(LDFLAGS_DEBUG) $(TCS_DIR)/lib/$(ENDIAN)/psosmon.o
OUT_SUFIX=OUT
OBJ_SUFIX=g
endif</P><P>USER_INCLUDE_DIR=../inc #设置用户include路径
USER_INCLUDES= -I$(USER_INCLUDE_DIR) #设置用户include路径
TMDVE = C:/BSP-7113
TMDVE = C:/BSP-7113-2.0
DVE_INCLUDES = -I$(TMDVE)/include
DVE_LIBS = -L$(TMDVE)/lib/el -L$(TMDVE)/bsp/bin/windows/el
#PLATFORM_BSP = $(BUILD_DIR)/libBSP_dve.o
PLATFORM_BSP = $(TMDVE)/bsp/bin/windows/el/libBSPDVE-2.o
OPTIONS_LINK=$(OPTS_LINK) $(OPTS_COMMON) $(DVE_LIBS) $(USER_LIBS)
OPTIONS_INCLUDE=$(TM_INCLUDES) $(PSOS_INCLUDES) $(TCPIP_INCLUDES) $(DVE_INCLUDES) $(USER_INCLUDES)
COMMON_OBJECT = $(OBJDIR)/startPlatform.$(OBJ_SUFIX) $(OBJDIR)/root.$(OBJ_SUFIX)
MPEG4_VER=xvid20041207
MPEG4_VER=xvid20050905
TCP_VER=PNA
TCP_VER=FUSION
USER_LIBS += -L$(LIB_OUT_DIR) -lCommon$(VO_FORMAT) -ljpeg -l$(MPEG4_VER)
VPATH += $(IADK)/lib/util
#########################################
include Makefile.jpeg
include Makefile.lib
USER_MAKEFILE=Makefile.gateway
USER_MAKEFILE=Makefile.writemac
USER_MAKEFILE=Makefile.libutil
USER_MAKEFILE=Makefile.switch.directAudio
USER_MAKEFILE=Makefile.switch
include $(USER_MAKEFILE)
include Makefile.cflags
##### MAC Limit #############################
MAC_VERSION=MAC_KENAIKE
MAC_VERSION=MAC_OFFICE_PAYMENT
MAC_VERSION=MAC_KERUI_20060105
MAC_VERSION=MAC_SONGBENZHINENG
MAC_VERSION=MAC_MAPLE
MAC_VERSION=MAC_XIAMEN_ZHUANGWEI
MAC_VERSION=MAC_SDA
TM_CFLAGS += -D$(MAC_VERSION)
#########################################
normal:all #编译目标
all:$(APP_OUT)
@$(ECHO) -----------------------------
@$(ECHO) Build Complete Use $(TM_FREQ) For $(MAC_VERSION) , Successful...
@$(ECHO) -----------------------------
$(OBJDIR)/%.$(OBJ_SUFIX) : %.c #产生obj 文件, 依靠各种C文件
@$(ECHO) Compiling $<
@$(TMCC) -c $(TM_CFLAGS) $< -o $@ $(OPTIONS_INCLUDE) #编译C文件
clean_all:clean clean_libjpeg clean_libcommon
clean: #清空环境
$(RM) -f $(APP_OBJ)
$(RM) -f $(APP_OUT)
#end of Makefile
</P> |
|