找回密码
 注册
搜索
查看: 1603|回复: 6

[讨论] 关于 makefile 的问题。写过 makefile 的朋友请进啊!

[复制链接]
发表于 2006-3-21 13:42:00 | 显示全部楼层 |阅读模式
我以前开发项目,用过的软件开发平台都是IDE的,所以关于 makefile 是一无所知。请高手帮忙看看下面的这个 makefile 文件:
include $(IADK)/common_defs.mk
SYSTEM_COMPONENTS = $(TCPIP_MOD) $(PLATFORM_LIBS) $(OS_LIBS)
OPTS_COMMON = $(LDFLAGS_FFS) { $(SYSTEM_COMPONENTS) } -lC++
BINDIR = $(OUTPUT_DIR)
OBJDIR = $(OBJECT_DIR)
LIB_OUT_DIR = ../lib
OPTS_LINK = $(LDFLAGS_MI)
OUT_SUFIX=MI
OBJ_SUFIX=o
ifeq ($(_TM_DEBUG),-g)
OPTS_LINK = $(LDFLAGS_DEBUG) $(TCS_DIR)/lib/$(ENDIAN)/psosmon.o
OUT_SUFIX=OUT
OBJ_SUFIX=g
endif
USER_INCLUDE_DIR=../inc
USER_INCLUDES= -I$(USER_INCLUDE_DIR)
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
@$(ECHO) Compiling $<
@$(TMCC) -c $(TM_CFLAGS) $< -o $@ $(OPTIONS_INCLUDE)
clean_all:clean clean_libjpeg clean_libcommon
clean:
$(RM) -f $(APP_OBJ)
$(RM) -f $(APP_OUT)
#end of Makefile
哪位大虾能给点解释或加个注释的吗?请斑竹高分相送。。。
发表于 2006-3-21 17:16:00 | 显示全部楼层
<P> 你是想修改些什么呢?</P><P>最好把common_defs.mk<FONT color=#ffffff>这个</FONT></P><P><FONT color=#000000>也贴出来</FONT></P>
点评回复

使用道具 举报

发表于 2006-3-21 17:17:00 | 显示全部楼层
<P>还是用IDE吧</P><P>代码编辑器+ GCC makefile在DOS/LINUX 下编译是退步啊</P><P>ADS1.2或者赶潮流玩玩KEIL RealView 2.5吧</P>
点评回复

使用道具 举报

发表于 2006-3-21 17:53:00 | 显示全部楼层
<P>代码编辑器+ GCC makefile在DOS/LINUX 下编译是退步???</P><P>严重不同意</P>
点评回复

使用道具 举报

发表于 2006-3-22 01:19:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>windyin</I>在2006-3-21 17:53:00的发言:</B>

<P>代码编辑器+ GCC makefile在DOS/LINUX 下编译是退步???</P>
<P>严重不同意</P></DIV>


你为何不接受新事物啊?
谁用谁知道,你为每个工程写特定的makefile所耗费的时间绝对比在IDE下设置编译环境效率差。makefile好处是灵活,可以搭配不同的环境,但是这个好处我用不到,我用IDE都能实现,DEBUG也方便
到此,我想起了一些电子设计公司的PCB老工程师还在用tango,呵呵不是怀疑其设计实力,而是想如果用好点的工具会效率更高
不过,每个人都有其熟悉的EDA工具,还是自己用的最爽的最适合了
点评回复

使用道具 举报

发表于 2006-3-22 01:24:00 | 显示全部楼层
<P>在LINUX下,缺乏可视化的设计软件与IDE,大家几乎都用makefile,但是在windows下,IDE确实爽多了</P><P>虽然还是有人认为IDE过多地限制了其能力</P>
点评回复

使用道具 举报

发表于 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 $&lt;               
@$(TMCC) -c $(TM_CFLAGS) $&lt; -o $@ $(OPTIONS_INCLUDE)  #编译C文件
clean_all:clean clean_libjpeg clean_libcommon
clean:         #清空环境
$(RM) -f $(APP_OBJ)
$(RM) -f $(APP_OUT)
#end of Makefile
</P>
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-23 20:19 , Processed in 0.044496 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表